Ruby on rails 如何使用不同类型的用户对系统进行建模?
我正在开发一个餐厅特许经营应用程序。我只需要使用一个用户模型,并且有一个安全的密码Ruby on rails 如何使用不同类型的用户对系统进行建模?,ruby-on-rails,ruby,roles,user-permissions,Ruby On Rails,Ruby,Roles,User Permissions,我正在开发一个餐厅特许经营应用程序。我只需要使用一个用户模型,并且有一个安全的密码 class User < ActiveRecord::Base has_secure_password 设置模型/类的推荐方法是什么? 我会为每个人创建一个模型,并为每个人提供一个安全的密码,还是我会将每个人放入用户模型并为他们分配一个类型?或者执行某种类型的继承多态性?我强烈建议使用来进行身份验证、管理权限等,或者为不同类型的用户定义不同的角色 我已经编写了一个教程,在这里开始学习:我将在一个类
class User < ActiveRecord::Base
has_secure_password
设置模型/类的推荐方法是什么?
我会为每个人创建一个模型,并为每个人提供一个安全的密码,还是我会将每个人放入用户模型并为他们分配一个类型?或者执行某种类型的继承多态性?我强烈建议使用来进行身份验证、管理权限等,或者为不同类型的用户定义不同的角色
我已经编写了一个教程,在这里开始学习:我将在一个类中完成这项工作,并为用户添加一个
角色
列,并为每个用户分配一个角色
# 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.rb中的#
类用户{:in=>ROLES}
ROLES.each do | role_name |#为每个角色生成如下方法:
定义#{role#u name}?#服务员?
角色=='{role_name}'#角色=='服务员'
结束#结束
结束
这允许您询问user.franchissor?|user.manager?
当您需要不同的权限时
这很简单,也是一个很好的起点。只要它不变得更复杂,我就会避免使用复杂的宝石。谢谢你的帮助。你能解释一下def{role\u name}吗?role=='{role\u name}'我以前没见过。@spuggy这就是元编程。该块迭代
角色
数组中的所有角色
名称,并为每个角色
创建一个方法,检查当前角色
是否具有给定的角色
。当您在这里不使用元编程时,您需要自己实现所有这些方法。更改角色时需要添加或删除方法。请参阅更新的答案,我添加了一个生成的示例。
# 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