如何使用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来控制后端的应用程序。
玩得开心!