我正在开发一个简单的Web应用程序,它具有用户模型和角色模型(以及其他),以及包含许多控制器的管理部分.我想使用before_filter来检查会话中用户的用户是否有'can_access_admin'标志.
我在application.rb中有这个代码:
def check_role @user = session [:user]
if @ user.role.can_access_admin.nil?|| !@user.role.can_access_admin render:text =>"您当前的角色不允许访问管理区域." 返回结束
然后我在其中一个管理控制器中有这个代码:
class Admin :: BlogsController def list @blogList = Blog.find(:all)end end 当我尝试查看列表操作时,我收到此错误: 未定义的方法'角色'为用户... 任何人都知道我必须做什么才能在application.rb中识别角色关联?(请注意,关联配置正确,@ user.role在我试图使用的其他地方工作正常) 只是一个猜测,但似乎你的会话[:user]只是存储id,你需要这样做: 或沿着这些行的东西从数据库中获取用户(以及它的关联). 在前一个过滤器中执行上述操作也很好.
1> MatthewFord..:@user = User.find(session[:user])