Ruby on rails 通过关联创建新模型对象
我认为可以通过关联创建新的模型对象Ruby on rails 通过关联创建新模型对象,ruby-on-rails,activerecord,associations,Ruby On Rails,Activerecord,Associations,我认为可以通过关联创建新的模型对象 class Order < ActiveRecord::Base belongs_to :basket end class Basket < ActiveRecord::Base has_one :order end order = Order.new() basket = order.basket.new() # NoMethodError: undefined method `new' for nil:NilClass 类顺序
class Order < ActiveRecord::Base
belongs_to :basket
end
class Basket < ActiveRecord::Base
has_one :order
end
order = Order.new()
basket = order.basket.new() # NoMethodError: undefined method `new' for nil:NilClass
类顺序 是的,但是你的语法有点错误:
class Order < ActiveRecord::Base
belongs_to :basket
end
class Basket < ActiveRecord::Base
has_one :order
end
order = Order.new()
basket = order.create_basket()
类顺序
如果您不想立即保存篮框,请使用build_basket
;如果关系是有很多:篮子
,请使用order.baskets.create()
和order.baskets.build()
谢谢Chris的回复,出于兴趣,当关系是有很多:篮子时,我尝试了basket=order.basket.new(),效果很好。这一切都很混乱。它可能会起作用,但我不确定order.basket集合是否会包含您新创建的对象,这意味着您可以保存order
,并将所有子对象自动保存并引用到order
(无需在参数中指定).供参考:在Ruby中,new
上的空括号通常被省略,即,Order.new
。