У меня есть три модели model1, model12 и mode2. Модель1 имеет много моделей модели 2 модели 12.Rails validates_presence_of проверяет сохраненную запись вместо отредактированной записи
Я должен проверять наличие модели2 через модель12.
Когда я пытаюсь сохранить отредактированную запись для рельсов model1, вы сохраняете запись, у которой нет модели 2. Проверка только завершается с ошибкой, когда уже существующая запись БД в модели 1 не содержит данных модели2.
class model1 < ActiveRecord::Base
has_many :model12, :dependent => :destroy, :include => [:model]
has_many :model2, :through => :model12, :uniq => true
validates_presence_of :model12, :message => "must be present"
Я попытался
validates_presence_of :model2, :message => "must be present"
Это тоже не работает.
Я полагаю, что в моем случае как-то рельсы проверяют сохраненную запись вместо несохраненной записи. Вот почему, когда уже сохраненная запись имеет модель 2, а несохраненная запись не имеет проверки модели2, она не терпит неудачу. Но это не удается, если сохраненная запись не имеет модели 2, а несохраненная запись также не имеет model2.
Пожалуйста, дайте мне знать, если мой вопрос не ясен.
Я думаю, вы должны добавить пользовательскую проверку для этого. – 2013-04-25 08:13:57
@SanthoshK Я делал это как validate do | model1 | model1.error («должен быть выбран»), если model1.model12s.blank? end Но здесь также такая же проблема, что «если model1.model12s» возвращает старое значение, которое находится в БД. – Nitesh
Это работает для меня. validate: address_present def address_present self.errors.add (: name, "can not be blank") if self.addresses.size == 0 end – 2013-04-25 09:04:46