Upgraded our app from Rails 2.2.2 to 2.3.4, and I''m now encountering
an error when adding a child to a parent.
Top of the stack:
wrong number of arguments (1 for 0)
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations/has_many_association.rb:61:in `save''
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations/has_many_association.rb:61:in `insert_record''
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations/association_collection.rb:119:in `<<''
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations/association_collection.rb:433:in
`add_record_to_target_with_callbacks''
My code (in snippets):
class Trip < ActiveRecord::Base
has_many :activity_reservations
end
class ActivityReservation < ActiveRecord::Base
belongs_to :trip
end
trip.activity_reservations << ActivityReservation.new
The has_many_associations code referenced:
def insert_record(record, force = false, validate = true)
set_belongs_to_association_for(record)
force ? record.save! : record.save(validate)
end
The ActiveRecord save method:
def save
create_or_update
end
The comments for the save method indicate that it can take an optional
perform_validations method, and the Validations module defines (with
alias_method_chain :save, :validation).
So, finally my question: what is going on here? ActiveRecord is
calling a save method passing an arg, but the save method in
ActiveRecord isn''t defined to take a boolean. I''m guessing
that
something with the Validations and alias_method_chain is supposed to
handle this, but in the way I''m doing things in my code, its not
working.
(ActiveRecord 2.2.2, which we were on previously, just called
ActiveRecord.save - not attempting to pass a boolean)
Any help or pointers would be greatly appreciated.
Paul Christmann