我遵循幾個教程並開始理解語法。如何使用Devise Rails 4創建多個用戶類型
我正在嘗試構建一個真實世界的工作應用程序 - 一個市場(如AirBnB)。
- 用戶類型1可以註冊並列出其可供出租的預訂。
- 用戶類型2可以在
- 中添加其預定項目的詳細信息訪問者可以瀏覽可用的預訂出租。
- 管理員 - 超級用戶訪問
我應該創建2個用戶模型(seller_user,buyer_user)?有1個用戶模型,並使用CanCan或類似方法定義不同角色?
什麼是最好的方式來做到這一點?
我遵循幾個教程並開始理解語法。如何使用Devise Rails 4創建多個用戶類型
我正在嘗試構建一個真實世界的工作應用程序 - 一個市場(如AirBnB)。
我應該創建2個用戶模型(seller_user,buyer_user)?有1個用戶模型,並使用CanCan或類似方法定義不同角色?
什麼是最好的方式來做到這一點?
一個可能的解決方案是讓用戶類只能用於登錄和用戶將通過一個多態關聯屬於承租人或承租人,如:
class User < ActiveRecord::Base
belongs_to :identifiable, :polymorphic => true
end
如果你不知道什麼多態關聯是,you should read this tutorial。
該代碼將用於這樣的:
subscriber = Tenant.find(1)
user = User.new
user.identifiable = tenant
user.save
所以,你的租戶或承租人將要涉及到一個用戶,則:識別領域是有關係的(多態關係)到另一個對象。
有了這個用戶可以使用這個可識別的關聯作爲Tenant或Renter,並且您的SessionsController將被重用於他們兩個(以及所有的驗證邏輯,因爲它將存在於User而不是其他類中)。
將roles
列添加到User
表中。
rails g migration AddRoleToUsers role:string
然後使用Cancancan
寶石。 https://github.com/CanCanCommunity/cancancan
閱讀cancancan
自述文件。
您可以設置哪些訪問權限的用戶與ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.admin?
can :manage, :all
else
can :read, :all
end
end
end
上面顯示出一個user.admin有哪些?可以查看任何模型的完整粗糙。如果你不是管理員,你只能閱讀任何模型。
您可能想使用active_admin
gem來控制後端的應用程序。
玩得開心!