undefined method current_user issue

Hey all,

I have this in my plugins directory:

1: <% if current_user && current_user.admin? %>
2: <div class="blogAdminLinks">
3: <ul class="blogList">
4: <li class="blogListFirst"><%= link_to 'New Blog Post',
new_blog_post_path %></li>

As you can see,it references current_user

So I define current_user in User model as a global variable:

cattr_accessor :current_user

I application controller, I define who current user is:

   def current_user
     @current_user = User.find(1)

     return @current_user if defined?(@current_user)
   end

It does appear that the method overrides the one in model, assuming the
one in model is a getter/setter.

Nevertheless, when I make a reference to it in one of my views, I get
undefined error method. Any idea?

Thanks for response.

Hey all,

I have this in my plugins directory:

1: <% if current_user && current_user.admin? %>

2:

3:

    4:

  • <%= link_to ‘New Blog Post’,

    new_blog_post_path %>

  • As you can see,it references current_user

    So I define current_user in User model as a global variable:

    cattr_accessor :current_user

    I application controller, I define who current user is:

    def current_user

 @current_user = User.find(1)



 return @current_user if defined?(@current_user)

end

It does appear that the method overrides the one in model, assuming the

one in model is a getter/setter.

Nevertheless, when I make a reference to it in one of my views, I get

undefined error method. Any idea?

At the top of your controller, you’ll want to add

helper_method :current_user

But I don’t understand what the ‘cattr_accessor :current_user’ in your user model accomplishes; where or how will you use that? You aren’t using it in the controller. What I’m saying is, you don’t need that, and probably don’t want it. :slight_smile:

At the top of your controller, you'll want to add
helper_method :current_user

Thanks for response, but I place this in application controller:

  helper_method :current_user

  private

  def require_login
    unless logged_in?
      flash[:error] = "You must be logged in to access this section"
      redirect_to login_path
    end
  end

  def logged_in?
    !!current_user
  end

  def current_user
    @current_user ||= session[:user_id] && User.find(session[:user_id])
  end

And now because all my contorllers inherit from it, I get undefined
method current_user on all the pages, even though current user is
clearly defined.

Clearly defined, but private.
Whip a "public" in front of it, or move the method above the private
declaration.