【问题标题】:RoR: Accessing models from with application.rbRoR:使用 application.rb 访问模型
【发布时间】:2010-09-13 14:04:30
【问题描述】:

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

我在 application.rb 中有这段代码:

定义检查角色 @user = session[:user]

如果@user.role.can_access_admin.nil? || !@user.role.can_access_admin render :text => "您当前的角色不允许访问管理区域。" 返回 结尾 结束

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

类 Admin::BlogsController

定义列表 @blogList = Blog.find(:all) 结尾 结束

当我尝试查看列表操作时出现此错误:

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

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

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

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

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

    或类似的东西从数据库中获取用户(连同它的关联)。

    在前置过滤器中也可以执行上述操作。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        此外,如果您使用的是 ActsAsAuthenticated 或 RestfulAuthentication 或它们的同类产品,您还可以使用它们提供的 current_user 方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多