私はうまくやって、すべてのモデルが大量割り当てから保護するように設定されていることを確認しようとしました. 私の User クラスには、保護されている管理フラグがあります。
それで、それを設定する最良の方法は何ですか?一括代入の恐ろしさについて語っている私が見たすべてのブログと RailsCast は、この部分を軽視しているように見えます。
典型的なように (私が思うに?) update_attributes
、更新が機能したかどうか、およびどのフラッシュメッセージを表示するかを判断するための条件として使用するようにコントローラーを設定しました。
if @user.update_attributes(params[:user])
では、いつ管理フラグを設定するのですか? update_attributes
はブロックを取りません (少なくとも Rails 2 ではそうではありません) ので、そこに設定することはできません。
条件の成功ブロックに設定して保存しようと思っていupdate_attributes
ます。これは、単純な管理者のブール値には問題ありません。実際の検証が必要なものはどうですか? その保存の失敗を処理するために、別の if/else ブロックが必要ですか?
呼び出す前に設定してupdate_attributes
、条件の保存部分を設定する必要がありますか?
if @user.save && @user.update_attributes(params[:user])
ちょっと匂いがするので。
大量割り当て保護を取り除き、スライスを使用するというDHHのアイデアが気に入らないのと同じくらい、これは私にとっては解決するようです。
それとも、私はこれをすべて間違っていますか?