在尝试将基于角色的身份验证(使用CanCan和Devise)添加到我的项目时,我发现有两种方法可以保存角色:第一种方法是“Has and Belongs_to”方式,第二种方法只是保存角色用户表中的新字段。
所以,问题是,如何以第一种方式定义聋人用户角色?我应该选择在第二种方式中定义聋人角色(在迁移中设置默认角色或编辑Devise的用户控制器?)
另外,我应该使用这种方法还是更好地使用gem呢?
P.S。我已经阅读过Tony Amoyal的教程,但没有在那里找到答案。
答案 0 :(得分:9)
如果我正确理解了这个问题,那么这对我有用: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
答案 1 :(得分:2)
这种情况在Rails AntiPatterns书中描述:http://railsantipatterns.com/
简短回答是:在users
表中使用字段,使用迁移设置默认角色。这种方式更简单。您不应该仅仅因为它可能更适合您未来的需求而使用复杂的解决方案。
答案 2 :(得分:1)
您可以在user.rb中执行以下操作:
after_initialize :set_default_role
private
def set_default_role
self.role ||= :user
end
答案 3 :(得分:0)
使用此gem可以实现非常简单的用户角色解决方案:https://github.com/platform45/easy_roles