是否有人尝试使用authlogic / declarative授权gems添加用户角色切换?
我的要求是用户可以拥有多个角色(例如作者,教师)并可以在应用程序中切换角色。
我对如何处理这个问题有两个想法:
我阅读了声明性授权自述文件,看不到任何看似内置的内容。任何想法都会受到赞赏
答案 0 :(得分:0)
今天回顾一下,解决方案很简单。我为我的多对多user_roles连接添加了一个布尔属性,以避免重复。现在,联接具有以下属性:
id | user_id | role_id | active
我的用户模型中的 role_symbols 方法,用于挂钩在authorization_rules.rb DSL中,现在看起来像:
def role_symbols
user_roles.where(:active => true).map do |user_role|
user_role.role.name.underscore.to_sym
end
end
现在,一个用户角色将自己设置为user_roles表中哪个角色的活动为true。
用户切换也很容易(来自用户模型)
def self.set_active_role(user_id, role_id)
UserRole.where(:user_id => user_id).update_all(:active => false)
activate_role = UserRole.where(:user_id => user_id, :role_id => role_id).first
activate_role.update_attributes(:active => true)
end
认为它可能会帮助将来的某个人