Thank you. I thought strong params needed symbols.

Cheers,
Linus


Den fredagen den 8:e mars 2013 kl. 10:35:13 UTC+1 skrev Jordon Bedwell:
>
> On Fri, Mar 8, 2013 at 3:27 AM, Linus Pettersson 
> <[email protected] <javascript:>> 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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msg/rubyonrails-talk/-/XjBdAERUM5cJ.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to