0

私は3つのテーブルを持っています:

profiles, users, payment_details

今、models/user.rb私は次のことをしています:

has_one :profile, :dependent => :destroy
has_one :payment_detail, :dependent => :destroy

models/profile.rb私は持っています:

has_one :payment_detail, :through => :user

そしてmodels/payment_details.rb私は持っています:

has_one :profile, :through => :user

次に、ネストされた:profileフォームを持つフォームがあり:payment_detailsます。

何らかの理由で、 fromではなくfrom:payment_details:user_id更新されます:id:profiles:user_id:profiles

4

1 に答える 1

1

ドキュメントに基づいて、 の動作は関連付けaccepts_nested_attributes_forに対して明確に定義されていないようです:through。関係は通常、直接の親子であると想定されるため、このような奇妙な動作が見られても驚くことではありません。

モデルを介してフォームを処理し、Userモデルの属性を受け入れるPaymentDetailか、何らかの方法でモデルを組み合わせる必要があります。アソシエーションを維持するコストが利点を上回る傾向があるため、アソシエーションを使用することが役立つことはめったにありませんhas_oneが、それは常にユースケースに依存します。列が多すぎない場合は、 と組み合わせUserProfilePaymentDetailコードを簡素化することもできます。

于 2012-11-22T18:06:06.187 に答える