在本例中,我使用了多态关联:
class Adress < ActiveRecord::Base
belongs_to :addressable, polymorphic: true
end
class User < ActiveRecord::Base
has_many :addresses, as: :addressable
end我现在想要的是一个用户有一个家庭地址和一个工作地址。我本可以:
class User < ActiveRecord::Base
has_one :home_address, as: :addressable
has_one :work_address, as: :addressable
end但是,我不知道哪个是家庭地址,哪个是工作地址。
我如何才能做到这一点?
发布于 2013-11-26 18:00:51
你有一个Addresses表,在你的Addresses表中保留一个字段作为'addressable_type‘。然后您将能够识别不同的地址。
您可以在地址表中包含这些字段,
t.integer :addressable_id
t.string :addressable_type或简化版本:
t.references :addressable, polymorphic: true谢谢
发布于 2013-11-26 18:08:08
你可以设置STI。您需要在地址模型中创建一个type列。
class Adress < ActiveRecord::Base
end
class WorkAddress < Address
belongs_to :user
end
class HomeAddress < Address
belongs_to :user
end
class User < ActiveRecord::Base
has_one :work_address
has_one :home_address
endhttps://stackoverflow.com/questions/20213311
复制相似问题