Подтвердить уникальность конкретного имени роли в модели пользователя? - PullRequest
0 голосов
/ 13 января 2012
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

Есть ли способ, которым я могу специально проверить имя в моем столбце :role?Я хотел бы сделать мою роль "admin" уникальной, чтобы гарантировать ее повторное использование по соображениям безопасности.

1 Ответ

1 голос
/ 13 января 2012

Если у вас есть только одна роль администратора, вы можете сделать что-то вроде этого:

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

Если все станет более сложным, вы можете изучить использование наследования отдельных таблиц для разделения логики для каждого типаПользователь в отдельный класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...