如何用不同类型的用户建模系统?
我正在开发一家餐厅特许经营应用程序。 我只需要使用用户模型并拥有安全密码。
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/