如何使用Devise Rails 4创建多个用户类型

问题描述:

我遵循几个教程并开始理解语法。如何使用Devise Rails 4创建多个用户类型

我正在尝试构建一个真实世界的工作应用程序 - 一个市场(如AirBnB)。

  • 用户类型1可以注册并列出其可供出租的预订。
  • 用户类型2可以在
  • 中添加其预定项目的详细信息访问者可以浏览可用的预订出租。
  • 管理员 - 超级用户访问

我应该创建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来控制后端的应用程序。

玩得开心!