my_object.save (ложь) ДЕЙСТВИТЕЛЬНО не пропускает мои Активные Рекордные проверки

Создайте столбец «Агент и поставщик» в типе данных bit, затем обновите

 update t
  set supplier=case when Supplier_Agent='Supplier'  then 1 else 0 end,
   agent =case when Supplier_Agent='Agent'  then 1 else 0 end

На сервере sql отсутствует логический тип данных, поэтому 0 означает false, а 1 означает true

5
задан BushyMark 29 March 2009 в 22:39
поделиться

4 ответа

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

Вот документация относительно обратных вызовов ActiveRecord: http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

Существует также руководство по использованию обратных вызовов с некоторыми деталями о том, как пропустить их здесь: http://guides.rubyonrails.org/activerecord_validations_callbacks.html

6
ответ дан 18 December 2019 в 06:12
поделиться

Я соглашаюсь, необходимо использовать обратные вызовы для взаимодействия с записями. Проверки никогда не должны изменять объекты..

Если все еще Вы находите потребность сделать это.. использовать

myobject.save_without_validation
5
ответ дан 18 December 2019 в 06:12
поделиться

Моя проблема существует, потому что одна из моих проверок изменяет одну из дочерних моделей во время процесса проверки

Зафиксируйте это, затем Ваши проблемы уйдут. Проверки никогда не должны изменять объекты!

12
ответ дан 18 December 2019 в 06:12
поделиться

Я соглашаюсь с Orion, никогда не использую проверку, чтобы изменить объект, использовать обратный вызов как after_save вместо этого.

3
ответ дан 18 December 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: