Ruby on rails 3 声明授权用户切换

Ruby on rails 3 声明授权用户切换,ruby-on-rails-3,authlogic,declarative-authorization,Ruby On Rails 3,Authlogic,Declarative Authorization,是否有人尝试使用authlogic/声明性授权gems添加用户角色切换 我的要求是,用户可以有许多角色(例如作者、教师),并且可以在应用程序中切换角色 我有两个办法来解决这个问题: 将另一个布尔属性(活动)添加到用户角色加入 桌子 将切换的角色\u id复制到用户表中并工作 别这样 我阅读了声明性授权自述,看不到任何似乎内置的内容。如果您有任何想法,我们将不胜感激。只要今天回顾一下,解决方案就足够简单了。我在我的多对多用户角色联接中添加了一个布尔属性,以避免重复。连接现在具有以下属性: id |

是否有人尝试使用authlogic/声明性授权gems添加用户角色切换

我的要求是,用户可以有许多角色(例如作者、教师),并且可以在应用程序中切换角色

我有两个办法来解决这个问题:

  • 将另一个布尔属性(活动)添加到用户角色加入 桌子
  • 将切换的角色\u id复制到用户表中并工作 别这样

  • 我阅读了声明性授权自述,看不到任何似乎内置的内容。如果您有任何想法,我们将不胜感激。

    只要今天回顾一下,解决方案就足够简单了。我在我的多对多用户角色联接中添加了一个布尔属性,以避免重复。连接现在具有以下属性:

    id | user_id | role_id | active
    
    我的用户模型中的角色\u符号方法,用于挂接authorization\u 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表中活动的ever role为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