Hey all,
I''m getting a nomethoderror:
The error occurred while evaluating nil.staff_admin?
It occurs while I''m trying to create role-based permissions for
specific
actions, such as edit. So a staff admin may not be able to edit. Now I
understand that it''s trying to say that staff admin is undefined, but I
believe I did define it in code below. Thanks for all suggestions.
Tables:
Users: role_id
Permissions: primary id, key (e.g. users_create)
Roles: primary id, key (e.g. staff member)
Privileges (join table): role_id, permissions_id
Models:
User
belongs_to :role
delegate :permissions, :to => :role
def staff_admin?
role == Role[:staff_admin]
end
Permission
has_many :roles, :through => :privileges
Role
has_many :users
has_many :permissions, :through => :privileges
Privileges
belongs_to :role
belongs_to :permission
ApplicationController < ActionController::Base
before_filter :authenticate
before_filter :staff_admin_required, :except => [:edit]
def current_user
@current_user ||= (authenticate_from_session ||
authenticate_from_basic_auth) unless @current_user == false
end
protected
def authenticate
redirect_to new_session_path unless authenticated?
end
def authorized_as_staff_admin?
current_user.staff_admin?
end
def current_user=(new_user)
session[:user_id] = new_user ? new_user.id : nil
@current_user = new_user || false
end
def authenticate_from_session
if session[:user_id] and not session_expired?
self.current_user = User.find_by_id(session[:user_id])
end
end
def authenticate_from_basic_auth
authenticate_with_http_basic do |email, password|
self.current_user = User.authenticate(email, password)
end
end
def staff_admin_required
authorized_as_staff_admin? || user_denied
end
def user_denied
flash[:notice] = ''You do not have permission to view this
page.''
end
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
2010/1/21 John Merlino <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org>:> Hey all, > > I''m getting a nomethoderror: > The error occurred while evaluating nil.staff_admin? > > It occurs while I''m trying to create role-based permissions for specific > actions, such as edit. So a staff admin may not be able to edit. Now I > understand that it''s trying to say that staff admin is undefined, but I > believe I did define it in code below. Thanks for all suggestions.It is not exactly undefined, but has the value nil. Have a look at the Rails Guide on debugging then, using ruby-debug, break into the code at the appropriate point and inspect the variables to find out what is going on. That will generally be much quicker than waiting for someone to analyse your code to work out what is wrong. Good luck Colin -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Colin Law wrote:> 2010/1/21 John Merlino <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org>: >> Hey all, >> >> I''m getting a nomethoderror: >> The error occurred while evaluating nil.staff_admin? >> >> It occurs while I''m trying to create role-based permissions for specific >> actions, such as edit. So a staff admin may not be able to edit. Now I >> understand that it''s trying to say that staff admin is undefined, but I >> believe I did define it in code below. Thanks for all suggestions. > > It is not exactly undefined, but has the value nil. > > Have a look at the Rails Guide on debugging then, using ruby-debug, > break into the code at the appropriate point and inspect the variables > to find out what is going on. That will generally be much quicker > than waiting for someone to analyse your code to work out what is > wrong. > > Good luck > > Colinerror was fixed with this: def authorized_as_staff_admin? current_user && current_user.staff_admin? end But still when logged in as staff admin, there are no restrictions on the actions, which was the point of the code. They were supposed to view all actions except edit. -- Posted via http://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.