我想在保存之前将user_id
添加到构建关联。我有一个复杂的形式有两个模型。
此代码位于我的new_order
方法中:
@customer_order = CustomerOrder.new(:order_amt => @mailer.full_price,
:years => @mailer.years,
:magazine_id => @mailer.magazine_id,
:mailer_id => @mailer.id,
:source => 'Mailer',
:lead_id => @mailer.lead.id,
:new_or_renewal => 'N',
:user_id => current_user.id)
@customer_order.payments.build
该关联完全按照我想要的方式保存。然后,当我单击以保存表单时,在创建方法中,我想将current_user_id
添加到付款模型中。我试图不把它坚持在表格中,因为我听说这是一种不好的做法。
@customer_order.save
就在@customer_order.save
之前,我想补充一下:
payment.user_id => current_user_id
答案 0 :(得分:1)
试试这个:
@customer_order.payments.create(user_id: current_user_id)
@customer_order.save
答案 1 :(得分:0)
Rails只针对这个要求进行了回调,并且它被称为 - 非常简单 - before_save
基本上,在您的模型中,您可以定义在保存活动记录之前要采取的某些步骤。
详细了解回调here
引用:
在Rails应用程序的正常操作期间,对象可能是 创建,更新和销毁。 Active Record提供了挂钩 这个对象生命周期,以便您可以控制您的应用程序和 它的数据。
回调允许您在更改之前或之后触发逻辑 对象的状态。