Ruby on rails RoR:使用application.rb从访问模型

Ruby on rails RoR:使用application.rb从访问模型,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在开发一个简单的web应用程序,它有一个用户模型和角色模型(以及其他),还有一个包含许多控制器的管理部分。我想使用before_过滤器检查会话中用户的用户是否具有“can_access_admin”标志 我在application.rb中有以下代码: def check_角色 @用户=会话[:用户] 如果@user.role.can_access_admin.nil?| |@user.role.can\访问\管理 render:text=>“您当前的角色不允许访问管理区域。” 回来 终止 结

我正在开发一个简单的web应用程序,它有一个用户模型和角色模型(以及其他),还有一个包含许多控制器的管理部分。我想使用before_过滤器检查会话中用户的用户是否具有“can_access_admin”标志

我在application.rb中有以下代码:

def check_角色 @用户=会话[:用户]

如果@user.role.can_access_admin.nil?| |@user.role.can\访问\管理 render:text=>“您当前的角色不允许访问管理区域。” 回来 终止 结束

然后我在其中一个管理控制器中有以下代码:

类Admin::BlogsController 定义列表 @blogList=Blog.find(:all) 终止 结束

当我尝试查看列表操作时,会出现以下错误:

用户的未定义方法“角色”


有人知道我必须做什么才能在application.rb中识别角色关联吗?(请注意,关联配置正确,@user.role在我尝试使用它的任何地方都可以正常工作)

只是猜测,但您的会话[:user]似乎只是在存储id,您需要执行以下操作:

@user = User.find(session[:user])
或者沿着这些路线来从数据库中获取用户(及其关联)


在before筛选器中执行上述操作也很好。

只是猜测,但您的会话[:user]似乎只是在存储id,您需要执行以下操作:

@user = User.find(session[:user])
或者沿着这些路线来从数据库中获取用户(及其关联)


在before过滤器中执行上述操作也很好。

会话[:user]是否持有用户?还是用户id?在调用.role之前,您可能需要进行查找。

会话[:user]是否持有该用户?还是用户id?您可能需要在调用.role之前进行查找。

此外,如果您使用的是ActsAsAuthenticated或RestfulAuthentication或其同类产品,您还可以使用他们提供的当前用户方法。

,如果您正在使用actsaauthenticated或RestfulAuthentication或它们的同类产品,您还可以使用它们提供的
current\u user
方法