Rails 3 проверяет уникальность игнорирует область по умолчанию на модели - PullRequest
10 голосов
/ 27 августа 2011

Я использую драгоценный камень constant_records в своем приложении rails 3.0.10, чтобы предотвратить жесткое удаление, и кажется, что rails игнорирует мою область по умолчанию при проверке уникальности

# user.rb
class User < AR::Base
  default_scope where(:deleted_at => nil)

  validates_uniqueness_of :email # done by devise
end

в моей консоли rails при попытке найти пользователя по электронной почте, который был удален, выдается пустое значение, но при регистрации новой учетной записи с удаленным адресом электронной почты возникает ошибка проверки в поле электронной почты.

Это также относится и к другой модели в моем приложении

# group.rb
class Group < AR::Base
  default_scope where(:deleted_at => nil)
  validates_uniqueness_of :class_name
end

и это тот же случай, что и раньше, удаление группы с последующей попыткой найти ее по имени класса приводит к nil, однако, когда я пытаюсь создать группу с известным именем удаленного класса, проверка не проходит.

Кто-нибудь знает, что я делаю что-то не так, или мне просто написать собственные валидаторы для этого поведения?

1 Ответ

10 голосов
/ 27 августа 2011

Попробуйте определить область проверки уникальности с помощью delete_at

validates_uniqueness_of : email, :scope => :deleted_at

Это может разрешить две записи с одним и тем же значением электронной почты, если для поля delete_at различно. До тех пор, пока удалено в, заполнено правильной отметкой времени, что, как я полагаю, делает перманентный gem, это должно работать.

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