[Problem] wrong number of arguments (1 for 0)

Hi,

I'm pretty new to Rails. I'll explain what I did.

I created a model called User. I edited the migration file to look like this (no table name pluralization) :

class CreateUsers < ActiveRecord::Migration   def self.up     create_table :user do |t|       t.column :email, :string       t.column :password, :string       t.column :user_type_id, :string       t.column :client_id, :integer       t.column :firstname, :string       t.column :lastname, :string       t.column :write_permission, :boolean       t.column :notify, :boolean       t.column :type, :string     end   end

  def self.down     drop_table :user   end end

Since I will also have a ContactPerson which will inherit from User, there is a "type" field.

Okay, then I migrated the database, and then used scaffolding to generate a controller.

Now I'm trying to add some basic validation to the model, so I did this :

class User < ActiveRecord::Base   validates_presence_of :email end

Nothing fancy yet. But now, when I try to add a new user (using the scaffold-generated views), I'm getting this error :

ArgumentError in UserController#create wrong number of arguments (1 for 0)

The automatically generated create looks like this :

  def create     @user = User.new(params[:user])     if @user.save       flash[:notice] = 'User was successfully created.'       redirect_to :action => 'list'     else       render :action => 'new'     end   end

I'm a bit stuck because of this. Any help would be greatly appreciated. Thanks!

Nothing fancy yet. But now, when I try to add a new user (using the scaffold-generated views), I'm getting this error :

ArgumentError in UserController#create wrong number of arguments (1 for 0)

Is params[:user] defined? Check in the logs the params hash. Do you have (in your view) fields like <%= text_field :user, :email %> ?

BTW, did you run the console? Just run 'ruby script/console' in your RAILS_ROOT and try to add your user. You should have this behavior:

pam=User.new

=> #<User: blablabla >

pam.valid?

=> false

pam.errors.full_messages.to_sentence

=> "Email should not be blank"

pam.email='dave@null.org'

=> 'dave@null.org'

pam.valid?

=> true

pam.save

=> true

Hope that helps,

Thanks for your reply. I tried using the console, this is what I got :

pam=User.new

=> #<User:0x48a9180 @new_record=true, @attributes={"user_type_id"=>nil, "type"=> nil, "write_permission"=>nil, "client_id"=>nil, "lastname"=>nil, "firstname"=>ni l, "notify"=>nil, "password"=>nil, "email"=>nil}>

pam.valid?

ArgumentError: wrong number of arguments (1 for 0)

  from C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.2/ lib/active_record/callbacks.rb:328:in `notify'   from C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.2/ lib/active_record/callbacks.rb:328:in `callback'   from C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.2/ lib/active_record/callbacks.rb:301:in `valid?'   from (irb):2

My log files seem to be empty... I'm using InstantRails (on Windows). Is that normal?

I found the solution. I had a field in the table called notify - so apparantly rails tried to call this instead of the correct notify method.