Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是否验证用户模型中特定角色名称的唯一性? add_列:用户,:角色,:字符串 类用户_Ruby On Rails_Ruby_Ruby On Rails 3_Devise - Fatal编程技术网

Ruby on rails 是否验证用户模型中特定角色名称的唯一性? add_列:用户,:角色,:字符串 类用户

Ruby on rails 是否验证用户模型中特定角色名称的唯一性? add_列:用户,:角色,:字符串 类用户,ruby-on-rails,ruby,ruby-on-rails-3,devise,Ruby On Rails,Ruby,Ruby On Rails 3,Devise,是否有一种方法可以专门验证我的:role列中的名称?我想将我的“admin”角色设置为唯一角色,这样我就可以保证出于安全原因不再使用它。如果您只有一个管理员角色,您可以执行以下操作: add_column :users, :role, :string class User < ActiveRecord::Base attr_accessible :email, :password, :remember_me, :username devise :database_authenti

是否有一种方法可以专门验证我的
:role
列中的名称?我想将我的
“admin”
角色设置为唯一角色,这样我就可以保证出于安全原因不再使用它。

如果您只有一个管理员角色,您可以执行以下操作:

add_column :users, :role, :string

class User < ActiveRecord::Base
  attr_accessible :email, :password, :remember_me, :username
  devise :database_authenticatable, ................
  validates_uniqueness_of :username, :email
  before_create :setup_default_role_for_new_users
  ROLES = %w[admin default banned]

  private
  def setup_default_role_for_new_users
    if self.role.blank?
      self.role = "default"
    end
  end
end
如果事情开始变得更复杂,您可以探索使用单表继承将每种类型用户的逻辑分离到一个单独的类中

validates_uniqueness_of :name, :if => lambda {|user| user.role == 'admin' }