Rails 3 проверяет уникальность игнорирует масштаб по умолчанию для модели
Я использую постоянный камень в моем приложении 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, пытаясь найти пользователя по электронной почте, который был удален, имеет значение null, но при регистрации для новой учетной записи с удаленным адресом электронной почты возникает ошибка проверки в поле электронной почты.
Это также относится к другой модели в моем приложении
# group.rb
class Group < AR::Base
default_scope where(:deleted_at => nil)
validates_uniqueness_of :class_name
end
и это тот же случай, что и раньше, удаление группы, а затем попытка найти ее по имени класса приводит к нулю, однако, когда я пытаюсь создать группу с известным удаленным именем класса, она не выполняет проверку.
Кто-нибудь знает, что я делаю что-то не так, или должен ли я просто писать специальные валидаторы для этого поведения?
Ответы
Ответ 1
Попробуйте просмотреть проверку уникальности с помощью delete_at
validates_uniqueness_of : email, :scope => :deleted_at
Это может позволить две записи с одинаковым значением электронной почты, если поле deleted_at отличается для обоих. До тех пор, пока удаленный объект заполнен правильной меткой времени, которая, как я полагаю, создает постоянный камень, это должно работать.