2017-02-17 2 views
0

私は2つのモデル:DonorGiftを持っています。私はhas_manybelongs_toの関連付けを作成しました。私のDonorsControllerクラスでは、私が持っている - これはDonorsControllerで定義されている追加のフィールドをRailsの子モデルに保存

デフ新しい @donor = Donor.new 贈り物= @ donor.gifts.build エンド -

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 

Iお支払いを処理した後に私がストライプから返却したcharge.idを保存したいのですが、これで試してみます -

@donor.gifts.stripe_charge_id = charge.idアルギフト - 助けなかった)。うまく

@donor.save作品 - フォーム上や許可リストにあるギフトフィールドを含む - これらすべてがDBに保存されます。ただし、stripe_charge_idフィールドは空白です。 charge.idという値があることを確認しました。

@donor.stripe_customer_id = customer.idが機能しています。

私はGiftモデルにcattr_accessor :stripe_charge_idを追加しました。

set/getメソッドを定義しようとしましたが、何も機能していません。

ご協力いただければ幸いです。私が尋ねたすべてのものは、親の&の子どもの団体に限定されていますが、私はそれに問題はありません。

ありがとうございます。

+0

@ donor.gifts.stripe_charge_id = charge.id。 'gifts'は' has_many'リレーションです。 'gifts.stripe_charge_id'は' gifts'がコレクションなので、割り当てることはできません。あなたはすべての贈り物を繰り返し、それらに 'charge.id'を割り当てる必要があります。それは一つの方法です。 – fanta

答えて

0

@fantaが言ったように、あなたはhas_many関係を持っています。だから、stripe_charge_idのように設定することはできません。そして、たとえあなたが正しいことをしても、あなたが親を救ったからといって、レールは子供を救うことはできません。

あなたはこれを行うことができます:

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

返信いただきありがとうございます。ドナーは潜在的に複数の贈り物を持っている可能性があるので、has_many関係ですが、それぞれの取引につき1つの贈り物があります。他のギフトフィールドは追加のコードなしでドナー保存メソッドに保存されるので、ドナーを保存する前にstripe_charge_idを追加することができると考えていました。しかし、私はdonorを保存した後にupdate_all関数を呼び出し、それを行った。再度、感謝します。 – Steve

+0

正しいとアップボーティングが良いと表示する – Fallenhero

+0

こんにちは - 私は投票しましたが、スコアはまだそれがスコアに反映されるには低すぎます - 申し訳ありません。 – Steve

関連する問題