NoMethodError even though the method is there

Hi,

I'm sure this will be an easy one, I'm just not seeing something really obvious. In my app/controllers/sessions_controller.rb file, I have this method:

  def create     if (log_user_in(params[:login], params[:password], params[:remember_me]))       user = User.find(session[:user_id])       if (user.is_subscriber?) # line 11         flash[:notice] = "Logged in successfully"         redirect_to :controller => 'admin'       else         flash[:notice] = "Logged in successfully"         redirect_to :controller => 'order', :action => 'new'       end     else       flash[:notice] = "Authentication failed."       render :controller => 'register', :action => 'start'     end   end

and in my User model, I have this method:

class User < ActiveRecord::Base   ...   def self.is_subscriber?     user_type_id == 1   end   ... end

but I'm getting this error:

NoMethodError in SessionsController#create undefined method `is_subscriber?' for #<User:0xb795d668> RAILS_ROOT: /usr/local/apache2/htdocs/easyrx Application Trace | Framework Trace | Full Trace /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/ attribute_methods.rb:200:in `method_missing' app/controllers/sessions_controller.rb:11:in `create'

What obvious thing am I missing?

Thanks, - Dave

Hey Dave, I think your problem is that you have "def self.is_subscriber?" instead of "def is_subscriber?", which makes it a class method instead of an instance method. Try taking out the "self." part.

Liam

laredotornado@zipmail.com wrote:

def … end in not with in the clas Xyz end…