【发布时间】:2012-11-03 05:49:11
【问题描述】:
我已经看到链接https://github.com/plataformatec/devise 用于为多个角色配置设计。但我对devise 将如何识别特定user 是admin 的事实感到困惑?
请解释一下,因为管理员没有任何注册过程。我也是ror 的新手,所以请解释一下为多个角色配置设备的所有步骤?
【问题讨论】:
我已经看到链接https://github.com/plataformatec/devise 用于为多个角色配置设计。但我对devise 将如何识别特定user 是admin 的事实感到困惑?
请解释一下,因为管理员没有任何注册过程。我也是ror 的新手,所以请解释一下为多个角色配置设备的所有步骤?
【问题讨论】:
CanCan 是迄今为止您最好的 ruby 角色解决方案,我建议您查看 Tony's Usage of Devise/CanCan 以创建基于角色的系统。我花了一点时间才弄清楚如何解决这个问题,但现在它对我来说非常有用。
第二种方法是
我会推荐一个榜样。在这种情况下,用户将have_and_belong_to_many :roles,而角色将have_and_belong_to_many :users。这在角色和用户之间创建了多对多关系。有关关联的更多信息,请参阅thisRailsGuide。
在您的 CanCan ability.rb 文件中,您可以执行以下操作(我只是在猜测您的设置):
can :manage, Brand do |brand|
user.has_role?("brand_manager") && user.brands.include?(brand)
end
在你的 user.rb 文件中这样写会很有帮助:
def has_role?(name)
role = Role.find_by_name(name)
(self.roles.include?(role)) ? (return true) : (return false)
end
希望这会有所帮助。
【讨论】: