考虑以下(人为的)示例模型关系:
class Yolk < ActiveRecord::Base
has_many :whites, through: :eggs
# has all sorts of interesting properties, like powderiness
end
class Egg < ActiveRecord::Base
belongs_to :yolk
belongs_to :white
# The egg has a color property!
end
class White < ActiveRecord::Base
has_many :yolks, through: :eggs
# has its own set of properties, such as shininess
end
(注意鸡蛋有颜色属性 - 这很重要!)
如果我想在设置蛋本身的颜色属性时将蛋黄添加到白色(创建蛋),我该怎么办?
给定White
变量名为white
的实例和Yolk
变量名为yolk
的实例:
white.yolks << yolk
不允许我设置创建的蛋的颜色,
但Egg.create(white: white, yolk: yolk, color: 'blue')
未更新变量white.yolks
以包含新的yolk
!
如何在更新white.yolks
时创建彩蛋?
<小时/> 更新:我意识到在现实世界中你只能得到一个蛋黄或白蛋;我的比喻有点崩溃。因此,为了澄清问题的范围,我不打算将项目之间的关系更改为
has_one
,或者创建一个包含所有属性的模型;只是假装一个鸡蛋可以有很多蛋黄和白色(出于某种原因)。
答案 0 :(得分:1)
如果我想在设置蛋本身的颜色属性时将蛋黄添加到白色(创建蛋),我该怎么办?
直接回答这个问题。
white.eggs.create!(yolk: yolk, color: 'blue')
考虑到,white
是White
的实例,yolk
是Yolk
的实例。
注意:您只需将has_many :eggs
添加到White
和Yolk
模型,即可双向查询。