我正在开发一家餐厅特许经营应用程序。我只需要使用用户模型并拥有安全密码。
class User < ActiveRecord::Base
has_secure_password
现在,我将拥有不同类型的具有不同访问权限和报告的用户:
franchisor user (head office)
restaurant owner / franchisee
manager
waiter
建议设置模型/类的方法是什么?
我会为每个has_secure_password
创建一个模型,还是将每个人都放入用户模型并为其分配类型?或者做某种继承多态?
答案 0 :(得分:3)
我会在一个课程中执行此操作,并向用户添加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?
之类的内容。
这很简单,也是一个很好的起点。只要它不会变得更复杂,我就会避免使用复杂的宝石。
答案 1 :(得分:2)
我强烈建议您使用Devise进行身份验证,CanCan来管理您的权限以及类似Rolify或Role Model的内容,以便为不同类型的用户定义不同的角色。
我已经在这里编写了一个开始使用这些内容的教程:http://www.phase2technology.com/blog/authentication-permissions-and-roles-in-rails-with-devise-cancan-and-role-model/