Re: [Rails] Filter params with strong parameters
On Fri, Mar 8, 2013 at 3:27 AM, Linus Pettersson
<linus.pettersson@gmail.com> wrote:
> Hi
>
> I have an hstore field in my database where I store a lot of different
> fields.
>
> I still want getters, setters and validations for my fields so I've created
> an array with the fields like this:
>
> DOCUMENT_FIELDS = %w[foo bar baz]
>
> Then I do some meta programming to create getters and setters:
>
> DOCUMENT_FIELDS.each do |field|
> define_method(field) do
> # ....
> end
>
> define_method("#{field}=") do |value|
> # ...
> end
> end
>
> Now I would like to pass all fields to strong parameters to properly filter
> it. I tried like this:
> params.require(:foo).permit(Foo::DOCUMENT_FIELDS.map(&:to_sym))
>
> But this doesn't work. It removes all values anyway. I guess it is because
> `Foo::DOCUMENT_FIELDS.map(&:to_sym)` creates an array that is passed to
> strong parameters (and it seems to not work with arrays).
>
> How can I get around this?
`params.require(:foo).permit(*Foo::DOCUMENT_FIELDS.map(&:to_sym))`
Though if I'm honest I probably would expect you to not take the long
trip with map and to_sym, might as well just leave them as string keys
because params has indifferent access with default keys being all
string keys for security.
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home