我已经学过几篇教程并开始理解语法。
我正在尝试构建一个真实世界的工作应用程序 - 一个市场(如AirBnB)。
我应该创建2个用户模型(seller_user,buyer_user)吗?有1个用户模型并使用CanCan或类似方法以不同方式定义角色?
最好的铁路方式是什么?
答案 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来控制后端的应用程序。
玩得开心!