有没有办法知道迁移正在运行?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法知道迁移正在运行?相关的知识,希望对你有一定的参考价值。
我有一个模型,我想“注册”有关列的元数据,例如初始化程序中的标签,描述。
作为其中的一部分,我想检查实际存在的列,如果没有则提高。
但是,在运行添加列的迁移之前,该列将不存在。
因此,如果为了迁移而初始化环境,我希望跳过此检查。
有没有办法知道迁移正在运行?或者db:migrate
rake任务触发了环境的加载......
class Preferences < ActiveRecord::Base
def self.register(attrs)
raise if migration_not_running? && !column_names.include?(attrs.fetch(:column_name))
@schema << atrs
end
def self.schema
@schema ||= []
end
private
def self.migration_not_running?
# ...?
end
end
答案
当您尝试加载视图时,检查是否存在待处理的迁移(如服务器)。
有ActiveRecord::Migration.check_pending!,如果有的话会引发ActiveRecord::PendingMigrationError
。但它在引擎盖下使用connection.migration_context.needs_migration?
逻辑,因此可以检查如下:
ActiveRecord::Base.connection.migration_context.needs_migration?
我理解,它并没有直接回答你的问题,但它暗示了一种可能的选择。
以上是关于有没有办法知道迁移正在运行?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在nodejs pdfkit中使一行中的文本片段变为粗体?