考虑以下(人为的)示例模型关系:
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,也不想创建一个拥有所有属性的模型;只是假装一个鸡蛋可以有很多蛋黄和蛋白(出于某种原因)。
发布于 2015-04-07 10:13:46
如果我想在设置鸡蛋本身的颜色属性的同时向一个白色的蛋黄(创建一个鸡蛋)添加一个蛋黄,我该如何做呢?
直接回答这个问题。
white.eggs.create!(yolk: yolk, color: 'blue')考虑到white是White的实例,yolk是Yolk的实例。
注意:您只需将has_many :eggs添加到White和Yolk模型中,就可以以相同的方式进行查询。
https://stackoverflow.com/questions/29488826
复制相似问题