Need help with ArgumentError during save()

0 views
Skip to first unread message

William Lefevre

unread,
Feb 9, 2007, 8:09:46 PM2/9/07
to rubyonra...@googlegroups.com
Greetings,
I've been getting an error all afternoon and haven't been able to
figure it out; any help would be wonder full.

Models-----

class Project < ActiveRecord::Base
belongs_to :job
belongs_to :thumbnail, :class_name => 'Image', :foreign_key =>
'image_id'
has_and_belongs_to_many :services
end

class Thumbnail < Image
has_one :project
end

Controller------

class Admin::ProjectsController < ApplicationController

def save
.
.
. # thumbnail image has been uploaded, created, and added to
@project.thumbnail

#if there's an id then do an update otherwise it's a new project so
do a save
if params[:id]
@s1 = @project.thumbnail.save if @project.thumbnail
@s2 = @project.update_attributes( params[:project] ) # this is
the line which fails
@saved = ( @s1 == false || @s2 == false ) ? false : true
else
@saved = @project.save
end

if @saved # decide what to render or where to redirect, etc.
.
.
.
end
end

I only run into problems when no thumbnail has been previously saved and
the thumbnail I'm trying to save is invalid (ie. fails to save). If a
thumbnail has already been saved then uploading a new, invalid thumbnail
is handled perfectly. It also doesn't matter if the Project is being
saved for the first time or updated.

Here's the full error I'm getting:

ArgumentError in Admin/projectsController#save

wrong number of arguments (1 for 0)
RAILS_ROOT:
/Users/william/Projects/rails/lizarddesign/public/../config/..

Application Trace | Framework Trace | Full Trace
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/callbacks.rb:349:in
`save'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/callbacks.rb:349:in
`callback'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/callbacks.rb:346:in
`callback'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/callbacks.rb:341:in
`each'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/callbacks.rb:341:in
`callback'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/callbacks.rb:252:in
`create_or_update'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1392:in
`save_without_validation'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/validations.rb:736:in
`save_without_transactions'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/transactions.rb:126:in
`save'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract/database_statements.rb:51:in
`transaction'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/transactions.rb:91:in
`transaction'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/transactions.rb:118:in
`transaction'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/transactions.rb:126:in
`save'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1439:in
`update_attributes'
#{RAILS_ROOT}/app/controllers/admin/projects_controller.rb:48:in `save'
Request

Parameters: {"commit"=>"Save", "project"=>{"job_id"=>"4", "title"=>"test
- no errors", "client"=>"big client", "description"=>"descriptoin is
good"}, "id"=>"32", "service_ids"=>["462", "483"],
"image"=>{"thumbnail"=>#<StringIO:0x26bf6b4>}}

Show session dump

Response

Headers: {"cookie"=>[], "Cache-Control"=>"no-cache"}


Lastly it doesn't crash till after the after_validation callback.

I'm stymied. Any insight would be great.

Thanks William

--
Posted via http://www.ruby-forum.com/.

Chris T

unread,
Feb 10, 2007, 4:44:49 AM2/10/07
to rubyonra...@googlegroups.com
Which is line 48
(#{RAILS_ROOT}/app/controllers/admin/projects_controller.rb:48)?

William Lefevre

unread,
Feb 10, 2007, 3:24:59 PM2/10/07
to rubyonra...@googlegroups.com
Chris T wrote:
> Which is line 48
> (#{RAILS_ROOT}/app/controllers/admin/projects_controller.rb:48)?

line 48 is:


@s2 = @project.update_attributes( params[:project] )

I get the error for both Project#update_attributes and Project#save when
the referenced (belongs_to) Thumbnail fails validation and does not
save. Also this only happens if there has never been an associated
Thumbnail. Once one is successfully associated it's no longer a problem.

William Lefevre

unread,
Feb 10, 2007, 3:43:14 PM2/10/07
to rubyonra...@googlegroups.com
William Lefevre wrote:
> Greetings,
> I've been getting an error all afternoon and haven't been able to
> figure it out; any help would be wonder full.

Whew. I figured it out a solution but I don't feel 100% why I was
getting this error. If anyone has any insight I'd still love to hear it.

The solution was simple, I added:

validates_associated :thumbnail

to my Project model and all is good.

Reply all
Reply to author
Forward
0 new messages