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' }