加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:14:08 所属栏目:百科 来源:网络整理
导读:我正在构建一个包含四种不同用户类型的库存管理应用程序:admin,employee,manufacturer,transporter.我还没有开始编码,但这正是我的想法.制造商和运输商与has_many有关:通过与产品的多对多关联,如下所示: class Manufacturer ActiveRecord::Base has_many
我正在构建一个包含四种不同用户类型的库存管理应用程序: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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读