2013-10-23 8 views
5

strong_paramsを条件付きにする方法はありますか? 2つの別々のメソッドを書く必要はありませんか? 1は、特定の条件は例えば4つの強力なパラメータ:条件付きにする?

真であるとき、許可リストに特定の属性を追加したい場合:

devise_parameter_sanitizer.for(:user) {|u| u.permit(:user, 
                :email, 
                :role, 
                )} 

私はこれを持っている:role属性は、上記の例では許さ。 Rails.env.developmentにこれを行う方法がある場合にのみ、この属性を許可することができますか?

答えて

1

解決策が見つかりませんでしたので、2つのメソッドを作成し、正しいparamメソッドを呼び出してレコードを処理しました。

8

これで目的の結果が得られますか?

user_params = [ :user, :email, (:role if Rails.env.development?) ].compact 
devise_parameter_sanitizer.for(:user) { |u| u.permit(*user_params) } 
+0

私のお詫び申し上げます。この質問はかなり古いです。 –

+0

古いかどうか、あなたが与えた答えは有効で有用なものです。シンタックスの周りを頭で囲む必要がありますが、少なくとも私はそれを使用していると思います! – RonLugge

+0

説明してください! – Matthias