Требования Мне нужно создать миграцию для действующей производственной базы данных, которая выполняет следующие действия:
- Для каждой компании проверьте, является ли набор имен экземплярами высказываниякласс, связанный с ним.
- Если указанная проверка не существует, произойдет сбой проверки и вернется ошибка.
- Если не продолжить миграцию
ТекущийПоведение Я попробовал это:
class AddFeature < ActiveRecord::Migration[5.1]
def change
run_migration = true
Company.all.each do |organization|
Company.product_types_names.each { |type| run_migration &= Utterance.exists?("utter_#{type.to_s}", organization.id) }
end
if run_migration
# my code
end
end
end
Хотя изменения в базе данных не происходят, мне нужно остановить миграцию с ошибкой.В настоящее время миграция не останавливается ни при каких формах ошибок, когда я не говорю.
Ожидаемое поведение
Я хотел бы знать, как простоверните ошибку и остановите миграцию, когда один из экземпляров не существует.Как то так:
class AddFeature < ActiveRecord::Migration[5.1]
def change
Company.all.each do |organization|
Company.product_types_names.each { |type| run_migration &= Utterance.exists?("utter_#{type.to_s}", organization.id) }
# return_errors_and stop the app if validation false
end
# my code
end
end