为什么association.build不会将parent_id分配给它的孩子?

时间:2009-04-20 22:28:55

标签: 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

保存失败,错误为ticket_message:计划不能为空。 (计划有效。)

1 个答案:

答案 0 :(得分:3)

当我的对象是新的并且在我调用build时未保存时,我已经发生了这种情况。

build分配plan_id,如果@plan的ID为零,那么您的机票plan_id将为零。由于build无法验证或保存,因此直到稍后才会发现。

将关联对象添加到未保存对象的其他方法似乎记住它未保存并正确设置了id。所以试试这个:

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