【发布时间】:2023-03-07 13:18:01
【问题描述】:
要求 我需要为执行以下操作的实时生产数据库创建迁移:
- 为每个公司验证一组名称是否是与其关联的话语类的实例。
- 如果所述验证不存在,则验证失败并返回错误。
- 如果不继续迁移
当前行为 我试过这个:
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
虽然对数据库进行了更改,但不会发生我需要迁移停止并出现错误。目前,当 I 话语不存在时,迁移不会因任何形式的错误而停止。
预期行为
我想知道如何在任何实例不存在时简单地返回错误并停止迁移。 像这样的:
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
【问题讨论】:
-
您是否尝试使用一些有意义的错误消息引发异常?
-
我是 Rails 新手,我真的不知道该怎么做
标签: ruby-on-rails validation migration rails-migrations