Рельсы: заставить модель быть недействительной

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

Что-то вроде этого:

user = User.new
user.valid? #true
user.make_not_valid!
user.valid? #false

Есть ли способ добиться этого?

Спасибо!

2 ответа

Решение

Ты можешь сделать:

validate :forced_to_be_invalid

def make_not_valid!
  @not_valid = true
end

private

def forced_to_be_invalid
  errors.add(:base, 'has been forced to be invalid') if @not_valid
end

Еще один вариант, который я нашел полезным для тестирования:

invalid_instance = MyModel.new
class << invalid_instance
  validate{ errors.add_to_base 'invalid' }
end
Другие вопросы по тегам