在尝试将基于角色的身份验证(使用 CanCan 和 Devise)添加到我的项目时,我发现有两种方法可以保存角色:第一种是“Has and Belongs_to”方式,第二种只是在新字段中保存角色用户表。
所以,问题是,如何以第一种方式定义默认用户角色,我应该选择哪种方式在第二种方式中定义默认角色(在迁移中设置默认角色或编辑 Devise 的用户控制器?)
另外,我应该使用这种方法还是使用 gem 更好?
PS 我已经阅读了 Tony Amoyal 的教程,但没有找到答案。
在尝试将基于角色的身份验证(使用 CanCan 和 Devise)添加到我的项目时,我发现有两种方法可以保存角色:第一种是“Has and Belongs_to”方式,第二种只是在新字段中保存角色用户表。
所以,问题是,如何以第一种方式定义默认用户角色,我应该选择哪种方式在第二种方式中定义默认角色(在迁移中设置默认角色或编辑 Devise 的用户控制器?)
另外,我应该使用这种方法还是使用 gem 更好?
PS 我已经阅读了 Tony Amoyal 的教程,但没有找到答案。
如果我正确理解了这个问题,这对我有用:Ruby on rails, cancan and default role assignment
只需将以下内容添加到 /models/user.rb 以在注册时分配默认角色:
after_create :default_role
private
def default_role
self.roles << Role.where(:name => 'User').first
end
Rails AntiPatterns 书中描述的这种情况:http ://railsantipatterns.com/
简短的回答是:使用users
表中的字段,使用迁移设置默认角色。这种方式要简单得多。您不应该仅仅因为它可能更好地满足您未来的需求而使用复杂的解决方案。
您可以在 user.rb 中执行以下操作:
after_initialize :set_default_role
private
def set_default_role
self.role ||= :user
end
可以使用这个 gem 实现一个非常简单的用户角色解决方案:https ://github.com/platform45/easy_roles