我怎样才能在特定模型中设置current_user

时间:2014-03-14 16:39:58

标签: ruby-on-rails ruby devise

在我的程序中,我有3个不同角色的用户模型。

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

class User < ActiveRecord::Base
  some validates and associations

具有角色==&#39; admin&#39;

的用户的管理员
class Admin < User
  def channels
    Channel.all
  end
end

开发者,适用于有角色的用户==&#39;开发人员

class Developer < User
  has_many channels
end

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

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

我可以设计吗?感谢

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我几周前用Single Table Inheritance解决了这个问题。

我将type列添加到users表中。然后rails可以自动执行特定模型。

Admin和Developer都使用带有admin和developer.then类型的users表,当用户登录rails时,它将特定于其模型的正确实例。