我正在开发一个简单的网络应用程序,它有一个用户模型和角色模型(以及其他),以及一个包含许多 Controller 的管理部分。我想使用 before_filter 来检查 session 中用户的用户是否具有“can_access_admin”标志。
我在 application.rb 中有这段代码:
定义检查角色 @user = session[:user]
如果@user.role.can_access_admin.nil? || !@user.role.can_access_admin render :text => "您当前的角色不允许访问管理区域。" 返回 结尾 结束
然后我将这段代码放在其中一个管理 Controller 中:
类 Admin::BlogsController < ApplicationController before_filter :check_role
定义列表 @blogList = Blog.find(:all) 结尾 结束
当我尝试查看列表操作时出现此错误:
用户的未定义方法“角色”...
有人知道我必须做什么才能让角色关联在 application.rb 中被识别吗? (请注意,关联已正确配置,@user.role 在我尝试使用它的其他任何地方都工作正常)
最佳答案
只是一个猜测,但您的 session [:user] 似乎只是存储 id,您需要这样做:
@user = User.find(session[:user])
或类似的东西从数据库中获取用户(连同它的关联)。
最好在前过滤器中执行上述操作。
关于ruby-on-rails - RoR : Accessing models from with application. rb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/141620/