Assuming I have an ActionController::Parameters
object like
params = ActionController::Parameters.new(a: 1, b: 2, c: 3)
I can call slice
on it or permit
to get/allow only certain parameters.
At first sight, they return the same thing
> params.slice(:a)
=> {"a"=>1}
> params.permit(:a)
[18:21:45.302147] Unpermitted parameters: b, c
=> {"a"=>1}
But if I call to_h
on it params.slice(:a).to_h
returns an empty hash, while params.permit(:a).to_h
returns an hash with key :a
. As far as I understood, this is the case, because :a
was not permitted.
What I wonder now is, what is the use case of slice
, if I could just use permit
?