2017-02-17 40 views
0

我有兩個模型:DonorGift。我創建了has_manybelongs_to關聯。在我DonorsController課,我有 -保存更多內容給Rails子模型

高清新 @donor = Donor.new 禮品= @ donor.gifts.build 結束

這在DonorsController定義 -

def create  
    @donor = Donor.new(donation_params) 
... etc.... 
end 

private 

    def donation_params 
    params.require(:donor).permit(:first_name, :last_name, :address_1, :address_2, :city, :state, :zip, :email, :phone, gifts_attributes: [:amount, :frequency]) 
    end 

我想要保存charge.id,我從處理付款後從條紋回來,我試着用這個 -

@donor.gifts.stripe_charge_id = charge.id(我也試過singul禮物 - 沒有幫助)。

@donor.save工作得很好 - 包括窗體上和允許列表中的禮物字段 - 它們都被保存到數據庫中。但stripe_charge_id字段爲空。我已經確認價值是charge.id

@donor.stripe_customer_id = customer.id正在工作。

我將cattr_accessor :stripe_charge_id添加到Gift模型。

我試過定義set/get方法,沒有任何工作。

任何幫助,將不勝感激。我用google搜索過的所有東西都只是在父母&子女協會上闡述過,但我沒有任何問題。

在此先感謝。

+0

@ donor.gifts.stripe_charge_id = charge.id。 '禮物'是'has_many'關係,所以,你不能指定'gifts.stripe_charge_id',因爲'禮物'是一個集合。你需要遍歷所有的禮物,並給他們分配'charge.id'。這是一種方式。 – fanta

回答

0

正如@fanta所說,你有一個has_many關係。所以你不能像這樣設置stripe_charge_id。即使你做得對,鐵軌也不會僅僅因爲你拯救了父母而拯救了孩子。

你可以這樣做:

@donor.gifts.update_all(:stripe_charge_id => charge.id) 
+0

謝謝你的回覆。這是一種有約束力的關係,因爲捐贈者可能有不止一個禮物,但每筆交易都有一個。其他禮品領域保存在捐助者保存方法沒有任何額外的代碼,所以我想我可以在保存捐助者之前添加stripe_charge_id。但是我在保存捐助者之後調用了update_all函數,並且做到了。再次感謝。 – Steve

+0

標記爲正確,upvoting會很好 – Fallenhero

+0

嗨 - 我投了票,但我的分數還是太低,它不能反映在比分 - 對不起。 – Steve