Hashに対して、permitメソッドは使えない・・・
pry(main)> params = {id: 1, value: 2}
=> {:id=>1, :value=>2}
pry(main)> params.permit(:value)
NoMethodError: undefined method `permit' for {:id=>1, :value=>2}:Hash
なので、通常のHashに対して、permitなどのStrong Parametersのメソッドを使いたい時は
以下のように宣言することで使える。
params = ActionController::Parameters.new({id: 1, value: 2})
実行結果
pry(main)> params = ActionController::Parameters.new({id: 1, value: 2})
=> {"id"=>1, "value"=>2}
pry(main)> params.permit(:value)
Unpermitted parameter: id
=> {"value"=>2}
クラスで実装した時の例
class SampleClass
def initialize(params)
@params = ActionController::Parameters.new(params)
end
def value_params
@params.permit(:value)
end
end
params = {id: 1, value: 2}
sample = SampleClass.new(params)
p sample.value_params
どうしてもpermit使いたいって時は便利かも?