如何用不同类型的用户建模系统?

我正在开发一家餐厅特许经营应用程序。 我只需要使用用户模型并拥有安全密码。

class User < ActiveRecord::Base has_secure_password 

现在,我将拥有不同类型的用户,具有不同的访问权限和报告:

 franchisor user (head office) restaurant owner / franchisee manager waiter 

建议模型/类的推荐方法是什么? 我会为每个模型创建一个模型并给每个has_secure_password还是将每个人都放入用户模型并为其分配类型? 或者做某种inheritance多态?

我会在一个类中执行此操作并向用户添加role列并为每个用户分配一个角色。

 # in user.rb class User < ActiveRecord::Base has_secure_password ROLES = %w[ franchisor restaurant_owner manager waiter ] validates :role, :inclusion => { :in => ROLES } ROLES.each do |role_name| # generates for each ROLE a method like this: def #{role_name}? # def waiter? role == '#{role_name}' # role == 'waiter' end # end end 

这允许你问一些像user.franchisor? || user.manager? user.franchisor? || user.manager? 每当你需要不同的权限。

这很简单,也是一个很好的起点。 只要它不会变得更复杂,我就会避免使用复杂的gem。

我强烈建议使用Devise进行身份validation, CanCan可以管理您的权限以及诸如Rolify或Role Model之类的东西来为不同类型的用户定义不同的角色。

我已经写了一个教程来开始这些: http : //www.phase2technology.com/blog/authentication-permissions-and-roles-in-rails-with-devise-cancan-and-role-model/