2017-04-06 2 views
1

私のユーザーの入力は、その値が配列にすることができlocationキー、持っている許可同じパラメータは、

params # => {"location"=>"California", "email"=>"[email protected]", "name"=>"Test"} 

私は思ったんだけど何のベスト方法は、配列または文字列を許可することです。

最もわかりやすいのは、許容パラメータとして:locationlocation: []の両方を追加することですが、これを実行する適切な方法であるかどうかはわかりません。

def params 
    params.permit(
    :name, 
    :email, 
    :location, 
    location: [] 
) 
end 

アドバイスはありますか?これを行う正しい方法ですか?

+0

あなたは 'params'メソッドのパラメータを変更することができます。しかし、あなたが今いるソリューションはかなり良いです – Ruslan

+1

これは実際にはStackTooDeepエラーになります。メソッド 'params'の名前を変更する必要があります。 –

+1

ところで、配列に変数 'x'を強制する方法は' [* x] 'となります –

答えて

0

permitwhitelist parameters for Active Model mass assignmentに使用されることを覚えておいてください。だからあなたの解決策は良いかもしれません。それを行うための別の方法は、(それはすでに配列の場合、それは変更されません)アレイにlocationを強制することです:

def permitted_params 
    params["location"] = Array(params["location"]) 
    params.permit(
    :name, 
    :email, 
    location: [] 
) 
end 
関連する問題