2014-10-06 59 views
0

我遵循幾個教程並開始理解語法。如何使用Devise Rails 4創建多個用戶類型

我正在嘗試構建一個真實世界的工作應用程序 - 一個市場(如AirBnB)。

  • 用戶類型1可以註冊並列出其可供出租的預訂。
  • 用戶類型2可以在
  • 中添加其預定項目的詳細信息訪問者可以瀏覽可用的預訂出租。
  • 管理員 - 超級用戶訪問

我應該創建2個用戶模型(seller_user,buyer_user)?有1個用戶模型,並使用CanCan或類似方法定義不同角色?

什麼是最好的方式來做到這一點?

回答

1

一個可能的解決方案是讓用戶類只能用於登錄和用戶將通過一個多態關聯屬於承租人或承租人,如:

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而不是其他類中)。

0

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來控制後端的應用程序。

玩得開心!

相關問題