首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多态关联或belongs_to关联

多态关联或belongs_to关联
EN

Stack Overflow用户
提问于 2013-11-26 17:40:19
回答 2查看 162关注 0票数 0

在本例中,我使用了多态关联:

代码语言:javascript
复制
class Adress < ActiveRecord::Base
  belongs_to :addressable, polymorphic: true
end

class User < ActiveRecord::Base
  has_many :addresses, as: :addressable
end

我现在想要的是一个用户有一个家庭地址和一个工作地址。我本可以:

代码语言:javascript
复制
class User < ActiveRecord::Base
  has_one :home_address, as: :addressable
  has_one :work_address, as: :addressable
end

但是,我不知道哪个是家庭地址,哪个是工作地址。

我如何才能做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2013-11-26 18:00:51

你有一个Addresses表,在你的Addresses表中保留一个字段作为'addressable_type‘。然后您将能够识别不同的地址。

您可以在地址表中包含这些字段,

代码语言:javascript
复制
t.integer :addressable_id
t.string  :addressable_type

或简化版本:

代码语言:javascript
复制
t.references :addressable, polymorphic: true

谢谢

票数 0
EN

Stack Overflow用户

发布于 2013-11-26 18:08:08

你可以设置STI。您需要在地址模型中创建一个type列。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20213311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档