Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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 为什么association.build不将父\u id分配给它的子级?_Ruby On Rails_Ruby_Activerecord_Associations - Fatal编程技术网

Ruby on rails 为什么association.build不将父\u id分配给它的子级?

Ruby on rails 为什么association.build不将父\u id分配给它的子级?,ruby-on-rails,ruby,activerecord,associations,Ruby On Rails,Ruby,Activerecord,Associations,我有以下型号: 在plan.rb中 has_many :tickets 在ticket.rb中 belongs_to :plan validates_presence_of :plan_id 在控制器中执行以下代码时 @plan.tickets.build( ... ) @plan.save 票证保存失败,错误消息为:计划不能为空。(计划有效。)当我在对象上调用build时,当我的对象是新的且未保存时,就会发生这种情况 build分配计划id,如果@plan的id为零,则您的票据的计划id

我有以下型号:

在plan.rb中

has_many :tickets
在ticket.rb中

belongs_to :plan
validates_presence_of :plan_id
在控制器中执行以下代码时

@plan.tickets.build( ... )
@plan.save

票证保存失败,错误消息为:计划不能为空。(计划有效。)

当我在对象上调用
build
时,当我的对象是新的且未保存时,就会发生这种情况

build
分配
计划id
,如果
@plan
的id为零,则您的票据的
计划id
将为零。因为
build
不会验证或保存,所以您要等到以后才能发现

将关联对象添加到未保存对象的其他方法似乎会记住该对象未保存,并适当设置id。所以试试这个:

 @plan.tickets << Ticket.new(...)
 @plan.save

@plan.tickets那么,除了保存父项之外,不可能有这样的验证、构建父项、构建关系子项,并且同时没有错误消息?