2015-11-06 45 views
0

我想在保存之前將user_id添加到構建關聯中。我有兩個模型的複雜形式。Rails - 在保存前向活動關聯版本添加值

此代碼是我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

build = create + save。 只需使用create方法。 – weezing

+1

@ weezing有點關閉。 'create' ='build' +'save' –

+0

@ D-side是我的錯。 – weezing

回答

1

試試這個:

@customer_order.payments.create(user_id: current_user_id) 
@customer_order.save 
0

Rails有隻是這個要求的回調,它被稱爲 - 很只需 - before_save

before_save documentation

實質上,在您的模型中,您可以定義在保存活動記錄之前要採取的某些步驟。

瞭解更多關於回調here

引述:

在Rails應用程序的正常運行,對象可能 創建,更新和銷燬。 Active Record爲此對象生命週期提供了 的掛鉤,以便您可以控制其應用程序和 的數據。

回調允許您在更改對象狀態之前或之後觸發邏輯。