RoR:使用application.rb访问模型

时间:2008-09-26 20:03:16

标签: ruby-on-rails ruby

我正在开发一个简单的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< ApplicationController的   before_filter:check_role

def list     @blogList = Blog.find(:all)   结束 端

当我尝试查看列表操作时,我收到此错误:

用户的未定义方法'角色'...

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

3 个答案:

答案 0 :(得分:6)

只是一个猜测,但似乎您的会话[:user]只是存储id,您需要这样做:

@user = User.find(session[:user])

或沿着这些行的某些东西从数据库中获取用户(及其关联)。

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

答案 1 :(得分:1)

会话[:user]是否持有用户?还是user_id?在调用.role。

之前,您可能需要查找

答案 2 :(得分:1)

此外,如果你正在使用ActsAsAuthenticated或RestfulAuthentication或他们的兄弟,你也可以使用他们提供的current_user方法。