有没有办法知道迁移正在运行?

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?

我理解,它并没有直接回答你的问题,但它暗示了一种可能的选择。

以上是关于有没有办法知道迁移正在运行?的主要内容,如果未能解决你的问题,请参考以下文章

在运行时在 Java 代码中运行 flyway 迁移

有没有办法关闭代码片段中的命名建议?

有没有办法在nodejs pdfkit中使一行中的文本片段变为粗体?

有没有办法改变片段主题?

Django 迁移:如何只允许在 --fake 模式下运行?

缺少 SQL SERVER 2014 代码片段