2014-03-19 47 views
1

有沒有人試圖使用authlogic /聲明授權寶石添加用戶角色切換?聲明授權用戶切換

我的要求是用戶可以有許多角色(例如作者,教師),並可以在應用程序中切換角色。

我對如何我會處理這兩個思路:

  1. 添加另一個布爾屬性(活動),到user_roles加入 表
  2. 複製切換ROLE_ID到用戶表和工作 關閉該

我讀了聲明授權自述,不能看,似乎是建於什麼。任何想法,將不勝感激

回答

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 

認爲它可能幫助別人,將來