有两种模式:
TGroup对象可能有许多T对象。TGroup对象有一个最喜欢的T对象。
我想定义将为我提供以下功能的关联:
TGroup.first.ts #将返回属于TGroup.first对象的T对象列表TGroup.first.favorite #将返回TGroup.first对象的最喜欢的T对象TGroup.first.ts << T.first #将T.first对象附加到TGroup.first对象TGroup.first.favorite = T.first #将T.first对象设置为TGroup.first对象的最爱我试图实现的解决方案是:
has_many :ts,:class_name => T.to_s has_one :t,:class_name => T.to_s,:foreign_key => :id,:primary_key => :favorite_id
我没有成功地定义“最喜欢”(应该是":as =>:收藏“吗?)所以我用"t“开头。不幸的是,这样做我不能设置TGroup.first.t = T.first。它没有将TGroup.first.t.id设置为T.first.id,而是对T模型进行更改。
发布于 2014-05-20 15:56:39
我认为您需要的是一个belongs_to关联,而不是一个has_one关联。
根据docs,外键用于声明belongs_to关联的类的表上,所以这样的操作应该可以完成:
belongs_to :favorite, :class_name => T.to_s根据每个特定的上下文,has_one/ context _to关联有时会有些混乱。
希望这能有所帮助。
https://stackoverflow.com/questions/23764252
复制相似问题