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.