RoR:使用application.rb访问模型
时间:2020-03-06 14:48:18 来源:igfitidea点击:
我正在开发一个简单的Web应用程序,该应用程序具有用户模型和角色模型(以及其他模型)以及包含许多控制器的管理部分。我想使用before_filter来检查会话中用户的用户是否具有'can_access_admin'标志。
我在application.rb中有以下代码:
def check_role
@user =会话[:user]
如果@ user.role.can_access_admin.nil? || [email protected]_access_admin
render:text =>"我们当前的角色不允许访问管理区域。"
返回
结尾
结尾
然后我在一个管理员控制器中有此代码:
类别Admin :: BlogsController <ApplicationController
before_filter:检查角色
定义清单
@blogList = Blog.find(:all)
结尾
结尾
当我尝试查看列表操作时,出现此错误:
用户未定义的方法"角色" ...
有谁知道我该怎么做才能使角色关联在application.rb中得到认可? (请注意,关联配置正确,并且@ user.role在其他我尝试使用的地方都可以正常使用)
解决方案
只是一个猜测,但是session [:user]似乎只是在存储ID,我们需要执行以下操作:
@user = User.find(session[:user])
或者类似的东西来从数据库中获取用户(及其关联)。
最好在before过滤器中执行上述操作。
session [:user]是否持有该用户?还是user_id?调用.role之前,可能需要查找。
另外,如果我们使用的是ActsAsAuthenticated或者RestfulAuthentication或者其兄弟,则也可以使用他们提供的current_user方法。