Authlogic, rails3_acts_as_paranoid и validates_uniqueness_of: login + default_scope (: condition => {: active => true}) - PullRequest
3 голосов
/ 21 октября 2010

Я хочу иметь возможность создавать несколько учетных записей пользователей с одним и тем же именем входа (из-за случая, когда пользователь удаляет свою учетную запись ... и затем регистрируется с тем же именем входа).Я использую authlogic и rails3_acts_as_paranoid.

Но есть проблема: Authlogic проверяет уникальность поля входа в систему и игнорирует default_scope (: условие => {: active => true}).

(см. Подробности о недопустимом сообщении об ошибке: https://rails.lighthouseapp.com/projects/8994/tickets/4064-validates_uniqueness_of-should-honor-default_scope-or-not)

Я не нашел, как сказать validates_uniqueness_of использовать область по умолчанию ... Можете ли вы мне помочь?

1 Ответ

2 голосов
/ 02 мая 2011

проверка

Встроенная проверка уникальности ActiveRecord не учитывает записи, удаленные ActsAsParanoid. Если вы хотите проверить уникальность только среди не удаленных записей, используйте макрос validates_as_paranoid в вашей модели. Затем вместо использования validates_uniqueness_of используйте validates_uniqueness_of_without_deleted. Это не позволит удаленным записям считаться с проверкой уникальности.

class Paranoiac < ActiveRecord::Base
  acts_as_paranoid
  validates_as_paranoid
  validates_uniqueness_of_without_deleted :name
end

Paranoiac.create(:name => 'foo').destroy
Paranoiac.new(:name => 'foo').valid? #=> true

удачи

...