Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 通过关联创建新模型对象_Ruby On Rails_Activerecord_Associations - Fatal编程技术网

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