Hi All,
Please provide idea or best practice link for polymorphic association step by step example.
Please explain with an compelete example.
Thanks
Learning rails 6 .
Hi All,
Please provide idea or best practice link for polymorphic association step by step example.
Please explain with an compelete example.
Thanks
Learning rails 6 .
the docs on this are actually a great reference and provide some examples that are really helpful
I would like to know how to execute query on polymorphic association model.
i have Human, Company, Address, model.
Run command for Address model as :
rails g model Address h_number:string city:string country:string disst:string addressable:references{polymorphic}
class Human < ApplicationRecord
belongs_to :company
has_one :address, as: :addressable
end
class Company < ApplicationRecord
has_many :humen
has_one :address, as: :addressable
end
class Address < ApplicationRecord
belongs_to :addressable, polymorphic: true
end
schema
irb(main):036:0> Address
=> Address(id: integer, h_number: string, city: string, country: string, disst: string, addressable_type: string, addressable_id: integer, created_at: datetime, updated_at: datetime)
irb(main):037:0> Human
=> Human(id: integer, first_name: string, last_name: string, sal: integer, age: integer, company_name: string, company_id: integer, created_at: datetime, updated_at: datetime)
irb(main):038:0> Company
=> Company(id: integer, name: string, year: integer, emp: integer, head: string, value: integer, created_at: datetime, updated_at: datetime)
insert data
Company.create(name: "jain inc", year: 1994, emp: 15000, head: "bharat", value: 900000)
Human.create(first_name: "learning", last_name: "rails", sal: 70000, age:28, company_name: "jain inc", company_id: 1)
When i am execute query h = Human.first.address
it is not getting address of comapny and human.
gettting nil :
Human Load (0.8ms) SELECT "humen".* FROM "humen" ORDER BY "humen"."id" ASC LIMIT $1 [["LIMIT", 1]]
Address Load (0.7ms) SELECT "addresses".* FROM "addresses" WHERE "addresses"."addressable_id" = $1 AND "addresses"."addressable_type" = $2 LIMIT $3 [["addressable_id", 1], ["addressable_type", "Human"], ["LIMIT", 1]]
=> nil
Please any idea how to get Address of Company and Human.
One more thing i am a bit confuse about addressable, polymorphic association
is it class or module or concern?
Thanks
learning rails 6 .
please any idea for this ?
Spelling error. Not sure if this is the whole problem
this is fine, because it accept plural
Have you created Address
records corresponding to the Human
or Company
you are looking for ?
For your example, an Address
with those attributes :
["addressable_id", 1], ["addressable_type", "Human"]
no, can you explain?
how should I do this?
Address.create!(
addressable_type: 'Human',
addressable_id: 1,
city: 'my city'
)
Then you can retrieve it with h = Human.first.address
this is fine.
thank you