ruby-on-rails – Ruby on Rails中的多个用户角色

我正在构建一个包含四种不同用户类型的库存管理应用程序:admin,employee,manufacturer,transporter.我还没有开始编码,但这正是我的想法.制造商和运输商与has_many有关:通过与产品的多对多关联,如下所示:
class Manufacturer < ActiveRecord::Base
 has_many :products
 has_many :transporters,:through => :products
end

class Product < ActiveRecord::Base
 belongs_to :manufacturer
 belongs_to :transporter
end

class Transporter < ActiveRecord::Base
 has_many :products
 has_many :manufacturers,:through => :products
end

所有四种用户类型都可以登录,但它们将具有不同的权限和视图等.但是,我不认为我可以将它们放在同一个表(用户)中,因为它们会有不同的要求,即:供应商制造商必须有帐单地址和联系信息(通过验证),但管理员和员工不应该有这些字段.

如果可能的话,我希望有一个登录屏幕,而不是4个不同的屏幕.

我不是要求确切的代码来构建它,但我无法确定实现它的最佳方法.任何想法将不胜感激 – 谢谢!

解决方法

你的基本方法看似合理.我建议你创建一个User的基类,并为特定的User类型使用STI,例如:
class User < ActiveRecord::Base
end

class Manufacturer < User
 has_many :products
 has_many :transporters,:through => :products
end

…等等.这样,如果需要将多个用户类型聚合到一个关系中而不管类型如何,则通常会有一个表来描述用户.这是一种相当常见的方法.

根据不同用户对系统的访问权限,您可能需要查看角色管理宝石,如Declarative Authorization.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...