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

前端之家收集整理的这篇文章主要介绍了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.

猜你在找的Ruby相关文章