是否有人尝试使用authlogic/声明式授权宝石添加用户角色切换?
我的要求是用户可以有多个角色(例如作者,教师),并且可以在应用程序中切换角色。
关于如何处理这个问题,我有两个想法:- 向user_roles连接添加另一个布尔属性(活动)表
- 将切换后的role_id复制到users表中并工作从
我阅读了声明式授权自述文件,但看不到任何内建的东西。
今天回顾一下这个问题,解决方案很简单。我在多对多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表中活动的角色。
用户切换也很容易(从用户模型)
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
认为这可能会帮助某人在未来