【问题标题】:How could i set current_user in a specific model我如何在特定模型中设置 current_user
【发布时间】:2014-04-20 02:14:45
【问题描述】:

在我的程序中,我为具有不同角色的用户提供了 3 个模型。

适用于所有用户的基本用户模型。

class User < ActiveRecord::Base
  some validates and associations

具有角色 == 'admin' 的用户的管理员

class Admin < User
  def channels
    Channel.all
  end
end

角色 == 'developer' 的用户的开发者

class Developer < User
  has_many channels
end

我正在与我的用户授权一起使用设计。当用户登录时,我希望特定的 current_user 成为用户角色的正确类的实例。

所以我可以使用 user.channels 来获取不同的频道集合。

我可以在设计中做到这一点吗?谢谢

【问题讨论】:

    标签: ruby-on-rails ruby devise


    【解决方案1】:

    您应该在您的用户表中创建一个admindeveloper 列,或者如果您有更多角色,则创建一个单独的角色表。您也可以使用方便的Rolify gem

    然后您可以在用户对象上调用此方法:user.has_role?(:admin),它返回 true 或 false。

    【讨论】:

      【解决方案2】:

      几周前我已经通过Single Table Inheritance 解决了这个问题。

      我在users表中添加了type列。然后rails可以自动指定具体的模型。

      Admin 和 Developer 都使用类型为 admin 和 developer 的 users 表。然后当用户登录时,rails 将指定其模型的正确实例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-27
        • 2012-10-26
        • 1970-01-01
        • 2018-03-22
        • 1970-01-01
        • 2012-09-02
        • 2023-03-12
        相关资源
        最近更新 更多