在这种情况下我使用多态关联:
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
但后来我不知道哪一个是家庭住址,哪一个是工作地址。
我怎样才能做到这一点?
答案 0 :(得分:0)
您有一个Addresses
表格,在addressable_type
表格中将一个字段保留为“Addresses
”。比你能识别不同的地址。
您可以在地址表中包含这些字段,
t.integer :addressable_id
t.string :addressable_type
或简化版:
t.references :addressable, polymorphic: true
由于
答案 1 :(得分:0)
您可以设置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
end