多くの場合、決定的な答えは「場合によります™」です。
一括割り当てする属性のみをアクセス可能にする必要があります。
したい、またはする必要がある場合は…</p>
Foo.new(name: 'name', bar: barvar)
…その場合は、アクセス可能にするだけbar
です。
最後にassign_attributes
が呼び出されsend("#{attribute_name}=", attribute_value)
、属性のアクセシビリティをチェックした後に簡単に実行されます。
いくつかのコーディング スタイルの側面:
多くの場合、param
ハッシュを処理するときに一括割り当てが発生します。少なくとも、そこにセキュリティの問題が潜んでいます。そこにBar
オブジェクトがあることはめったにありませんが、より頻繁にbar_id
.
ただし、モデルインスタンスを操作する場合、ほとんどの人は関連付けメソッドを使用することを好みます (@Andrew Nesbitt が書いたように)。これにはいくつかの利点があることが多いためです (自動保存、対応する関連付けの自動更新、よりクリーンなコードなど)。
したがって、どちらか一方または両方を使用する理由があります。
私の個人的な意見: Rails 4.0 にはパラメーターのサニタイズのためのより良いソリューションがあるため、このトピックに多くの時間を費やすべきではありません。( Rails 3 でも必要な場合は、strong_parametersを参照してください)