2016-07-30 70 views
0

,使用權限寶石權威人士來實現。我有3個模型用戶,角色,roles_users,因爲我在用戶和角色之間有many_to_many關係。我想編輯用戶角色。軌道4 - 我有軌道4應用與用戶,角色更新用戶角色權限

class User 
    has_and_belongs_to_many :roles 
end 

class role 
    has_and_belongs_to_many :users 
end 

存儲user_id和role_id的第3個表role_users。

因此,假設我想編輯用戶角色我應該遵循什麼辦法。我應該從第三張表中刪除現有記錄,即roles_users,然後創建顯示角色的新記錄。請建議。

回答

2

不知道如果你還在工作,否則什麼你究竟要完成的,而是繞過去處理用戶的角色與權威人士的好辦法正在與色器件來處理用戶配置文件,並創建一個管理員帳戶。管理員可以將特定用戶的角色更改爲您擁有的任何角色(即用戶,貴賓,主持人,編輯者,管理員等)。天空是你希望你的應用有多種角色的複雜程度的限制。在用戶模型中的使用「枚舉」,將有助於引導你的角色選擇:

class User < ActiveRecord::Base 

    enum role: [:user, :vip, :admin] 
    after_initialize :set_default_role, :if => :new_record? 

    def set_default_role 
    self.role ||= :user 
    end 

    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

end 

這種方式,你可以設置一個新用戶的默認角色是一個普通用戶,然後管理員可以更新用戶新用戶應該扮演的角色。如果您想要一個更復雜的應用程序與多個公司/組,可以將其應用於多租戶應用程序。然後評論家的政策和範圍將起作用,以確定誰有權在您的應用中執行某些操作。例如:

  • 管理員可以看到用戶
  • 管理員可以更改用戶的角色
  • 管理員和編輯器可以創建,編輯列表,刪除,更新博客文章
  • 普通用戶無法看到用戶
  • 普通用戶不能更改自己的角色
  • 普通用戶無法看到(或修改)其他用戶的個人資料
  • 的一般負責的列表Ÿ用戶可以看到(和編輯)自己的用戶配置文件
  • 普通用戶不能編輯,刪除或更新的博客文章
  • 一個普通的用戶可以看到發佈的博客文章

一個很好的資源要開始使用示例應用程序,請遵循Rails-devise-pundit示例應用程序,該示例應用程序將引導您使用用戶角色設置相當好的事物。如果您更直觀,則可以按照此YouTube視頻進行操作:Rails Authorization with Pundit。如果您還想在創建用戶角色時使用rspec進行測試,則該視頻非常棒。

希望這個操縱你的,你要完成什麼樣的正確方向。