rails / protected_attributes

Protect attributes from mass-assignment in ActiveRecord models.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error when creating record in 1.0.5

martinstannard opened this issue · comments

I have a model that is instantiated using first_or_create:

def session_api_key
api_keys.active.session.first_or_create()
end

Upgrading from 1.0.3 to 1.0.5 produces the error below:

ArgumentError: wrong number of arguments (2 for 0..1)
from /Users/martin/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/core.rb:180:in initialize' from /Users/martin/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/inheritance.rb:27:innew'
from /Users/martin/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/inheritance.rb:27:in new' from /Users/martin/.gem/ruby/2.0.0/gems/protected_attributes-1.0.5/lib/active_record/mass_assignment_security/persistence.rb:45:increate'
from /Users/martin/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/relation.rb:121:in block in create' from /Users/martin/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/relation.rb:270:inscoping'
from /Users/martin/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/relation.rb:121:in create' from /Users/martin/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/relation.rb:133:infirst_or_create'
from /Users/martin/code/brightseeds/app/models/user.rb:39:in session_api_key' from (irb):17 from /Users/martin/.gem/ruby/2.0.0/gems/railties-4.0.0/lib/rails/commands/console.rb:90:instart'
from /Users/martin/.gem/ruby/2.0.0/gems/railties-4.0.0/lib/rails/commands/console.rb:9:in start' from /Users/martin/.gem/ruby/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:64:in<top (required)>'
from ./script/rails:6:in require' from ./script/rails:6:in

'

This can also be triggered by a simple create in the console:

irb(main):008:0> ApiKey.create
ArgumentError: wrong number of arguments (2 for 0..1)
from /Users/martin/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/core.rb:180:in initialize' from /Users/martin/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/inheritance.rb:27:innew'
from /Users/martin/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/inheritance.rb:27:in new' from /Users/martin/.gem/ruby/2.0.0/gems/protected_attributes-1.0.5/lib/active_record/mass_assignment_security/persistence.rb:45:increate'
from (irb):8
from /Users/martin/.gem/ruby/2.0.0/gems/railties-4.0.0/lib/rails/commands/console.rb:90:in start' from /Users/martin/.gem/ruby/2.0.0/gems/railties-4.0.0/lib/rails/commands/console.rb:9:instart'
from /Users/martin/.gem/ruby/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:64:in <top (required)>' from ./script/rails:6:inrequire'
from ./script/rails:6:in `

'

This is because protected_attributes 1.0.5 only works with Rails >= 4.0.1