私は自分自身が大量の割り当てを避けるためにのために、より体系的な解決策を持っていると思います。Railsの中に大量の割り当てを避けるために、paramsハッシュで敏感な要素を交換し
典型的な状況は、(MyController#で作成)(フォームから自動的に提出)のparamsからIDまたはUSER_IDを削除し、内部current_user.idに置き換えることです。
私は考えることができるソリューションは、内部の値で敏感な属性を置き換えるために、その後update_attributes(親と子オブジェクトの)、ハッシュのparamsからオブジェクトを作成することです:
@user = User.create(:params[:user])
@user.update_attributes(:id => current_user.id)
@user.profile.update_attributes(:user_id => current_user.id)
@user.preference.update_attributes(:user_id => current_user.id)
が短い/よりDRY方法はありますこれを言う?
好み場合などユーザープロファイルの子オブジェクトは、(ビルドメソッドを介して作成)され、どのように私は、ユーザーのために自分の外部キーを探し、自動的に私が親に渡された値とそれらを交換する方法を記述することができますか?
ありがとうございます。
おかげザカリー。 attr_accessibleでやろうとしていたことをどうやってやるのか詳しく教えてください。私はattr_protectedなどについて知っていますが、DRY方法で保護された属性を割り当てる方法がわかりません。 – AdamNYC
これは 'attr_protected'と同じように動作しますが、ブラックリストではなくホワイトリストです。したがって、 'name'、' email'、 'password'という名前の属性を持つ場合、' attr_accessible:name、:email、:password'を実行すると、これらの3つの属性のみを割り当てることができます。 –
申し訳ありませんが、私の質問は、あなたのコントローラでこれらの保護された属性をどのように実際に扱うのですか? – AdamNYC