有两种型号:
TGroup对象可能有很多T对象。 TGroup对象有一个最喜欢的T对象。
我想定义将为我提供以下功能的关联:
TGroup.first.ts
#将返回属于TGroup.first
对象TGroup.first.favorite
#将返回TGroup.first
对象TGroup.first.ts << T.first
#将T.first对象附加到TGroup.first
对象TGroup.first.favorite = T.first
#将T.first
对象设置为
TGroup.first
object 我试图实施的解决方案是:
has_many:ts,:class_name =&gt; T.to_s
has_one:t,:class_name =&gt; T.to_s,:foreign_key =&gt; :id,:primary_key =&gt; :favorite_id
我没有成功定义&#34;最喜欢的&#34; (应该是&#34;:as =&gt;:最喜欢&#34;?)别名,所以我开始使用&#34; t&#34;代替。
不幸的是,这样做我无法设置TGroup.first.t = T.first
。不是将TGroup.first.t.id
设置为T.first.id
,而是在T模型上进行更改。
答案 0 :(得分:2)
我认为你需要的是belongs_to关联而不是has_one关联。
根据文档,外键在表中声明了belongs_to关联的类,所以这样的事情应该完成:
belongs_to :favorite, :class_name => T.to_s
根据每个特定的上下文,has_one / belongs_to关联有时会有点混乱。
希望这有帮助。