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

时间:2014-10-06 01:55:42

标签: ruby-on-rails-4 devise model

我已经学过几篇教程并开始理解语法。

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

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

我应该创建2个用户模型(seller_user,buyer_user)吗?有1个用户模型并使用CanCan或类似方法以不同方式定义角色?

最好的铁路方式是什么?

2 个答案:

答案 0 :(得分:1)

一种可能的解决方案是使User类仅用于登录,用户通过多态关联属于Renter或Tenant,如:

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

因此,您的租户或租客将与一个用户相关,:可识别字段是与另一个对象的关系(多态关系)。

有了这个,用户可以使用这个可识别的关联作为租户或租客,你的SessionsController将被重用(以及所有的身份验证逻辑,因为它将存在于User而不是其他类中)

答案 1 :(得分:0)

roles列添加到User表格。

rails g migration AddRoleToUsers role:string

然后使用Cancancan gem。 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来控制后端的应用程序。

玩得开心!