簡體   English   中英

使用Devise和Rails 4為多種類型的用戶建模

[英]Modelling multiple types of users with Devise and Rails 4

我有3種類型的“用戶”

商店提供商客戶

最后2個用戶將具有類似的屬性,例如

名姓等等

並且Shop用戶類型之間的對比度最大。

就行為而言,盡管提供者和商店將固有許多客戶行為,但它們都將完全不同。

正如我所研究的,似乎可以用CanCan處理這些行為。

我現在正在嘗試如何驗證這些類型。

我已經看過STI模型,但是我無法掌握這些額外屬性的位置。

我的心理模型是追隨者:

用戶是一個表和模型類型是從其繼承的抽象模型。

所以我想知道,如何僅針對商店類型添加屬性,例如公司地址?

還是用戶表中有一個名為“類型”的列,並且該類型與這些類型表相關聯? 在類型表中還有額外的屬性嗎?

甚至不必費心將Devise引入其中; 設計是為了認證 而不是 授權 身份驗證是確定訪問您網站的人是否像您認為的那樣(例如登錄)。 授權正在確定是否允許用戶執行某種操作(例如,創建新帖子)。

您想要做的是擁有某種系統,可以為普通用戶分配三種不同的類型。 CanCan會做類似的事情。 自己執行此操作的一種方法是使用基於權限號的系統。 假設普通用戶的權限級別為100,商店的權限級別為50,提供者的權限級別為25。使用此系統,您可以確定用戶可以執行的操作而不必創建單獨的模型,這將使​​您的架構不必要地變得復雜。 這是一個如何與UserController一起使用的示例:

def show
  if current_user.permissions == 100
     render "customer_show"
  elsif current_user.permissions == 50
     render "shop_show"
  else
     render "provider_show"
  end
end

最簡單的方法是在用戶表中添加一列稱為“ 權限” ,創建新行時默認為100。 遷移情況如下所示:

def change
  add_column :users, :permissions, :integer, default: 100
end

至於身份驗證 ,請不要擔心。 讓設計去做吧! 每個用戶,無論是哪種類型,都將以相同的方式登錄和注冊,可能每個用戶都有單獨的表單,每個表單都有一個隱藏字段來設置該特定類型用戶的權限級別。

我知道我參加晚會很晚,但我打算將其發布給將來的SO搜索者。 您可以使用Devise授權操作。 如果您有針對“買方”和“賣方”的設計模型,則可以添加“ buyer_signed_in?” 您只希望買家能夠執行的任何操作。 您還可以執行更具體的基於角色的授權-查閱“ 設計”頁面

總而言之,Tsiege的解決方案聽起來很有趣。 讓我們知道您是否成功!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM