LoginSignup
14
12

More than 5 years have passed since last update.

RubyのHashをStrong Parametersで検証したい時

Posted at

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使いたいって時は便利かも?

14
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
12