Rails 4.0.0 strong parameters don't seem to work as documented -


the example used in documentation (http://guides.rubyonrails.org/action_controller_overview.html#strong-parameters) strong parameters is:

params.require(:person).permit(:name, :age) 

however, doesn't work because require() returns value of parameter, not parameter object permit() can called on.

$ rails console 1.9.3p286 :005 > params = actioncontroller::parameters.new(person: 1, name: "joe", age: 30)  => {"person"=>1, "name"=>"joe", "age"=>30}  1.9.3p286 :006 > params.require(:person).permit(:name, :age) nomethoderror: undefined method `permit' 1:fixnum     (irb):6     /users/jeremyburton/.rvm/gems/ruby-1.9.3-p286/gems/railties-4.0.0/lib/rails/commands/console.rb:90:in `start'     /users/jeremyburton/.rvm/gems/ruby-1.9.3-p286/gems/railties-4.0.0/lib/rails/commands/console.rb:9:in `start'     /users/jeremyburton/.rvm/gems/ruby-1.9.3-p286/gems/railties-4.0.0/lib/rails/commands.rb:64:in `<top (required)>'     bin/rails:4:in `require'     bin/rails:4:in `<main>' 

additionally, seems odd require can take 1 parameter. seems should able do:

params.require(:a, :b).permit(:c, :d) 

whereas, have is:

params.require(:a) params.require(:b) params.permit(:a, :b, :c, :d) 

which doesn't seem dry - if parameter required definition permitted, surely.

am missing something?

the intention of require working rails form_for objects, whereby params hash include name of object you're wrapping form around. this:

actioncontroller::parameters.new(person: { name: 'francesco' }).require(:person) 

in case, form_for have been wrapped around person object. .require(:person) wrap resulting hash ({ name: 'francesco' }) actioncontroller::parameters object can respond .permit. test wasn't mimicking expected params use-case.

also, makes sense require accept 1 argument since you'd want setup unique <attribute>_params method per object type since, again, these meant wrappers around specific object. but, you'd have 1 root object being sent form submit, , sub objects within that.


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -