我有以下型号:
在plan.rb
has_many :tickets
和ticket.rb
belongs_to :plan
validates_presence_of :plan_id
在控制器中执行以下代码时
@plan.tickets.build( ... )
@plan.save
保存失败,错误为ticket_message:计划不能为空。 (计划有效。)
答案 0 :(得分:3)
当我的对象是新的并且在我调用build
时未保存时,我已经发生了这种情况。
build
分配plan_id
,如果@plan
的ID为零,那么您的机票plan_id
将为零。由于build
无法验证或保存,因此直到稍后才会发现。
将关联对象添加到未保存对象的其他方法似乎记住它未保存并正确设置了id。所以试试这个:
@plan.tickets << Ticket.new(...)
@plan.save