Создайте столбец «Агент и поставщик» в типе данных 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
Можно хотеть использовать before_create или другой обратный вызов для взаимодействия с записью до сохранения его к базе данных вместо того, чтобы пытаться сделать эту внутреннюю часть блока проверки допустимости.
Вот документация относительно обратных вызовов ActiveRecord: http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
Существует также руководство по использованию обратных вызовов с некоторыми деталями о том, как пропустить их здесь: http://guides.rubyonrails.org/activerecord_validations_callbacks.html
Я соглашаюсь, необходимо использовать обратные вызовы для взаимодействия с записями. Проверки никогда не должны изменять объекты..
Если все еще Вы находите потребность сделать это.. использовать
myobject.save_without_validation
Моя проблема существует, потому что одна из моих проверок изменяет одну из дочерних моделей во время процесса проверки
Зафиксируйте это, затем Ваши проблемы уйдут. Проверки никогда не должны изменять объекты!
Я соглашаюсь с Orion, никогда не использую проверку, чтобы изменить объект, использовать обратный вызов как after_save вместо этого.