繁体   English   中英

Rails 5 的 ActiveRecord::Migration 中的 [5.0] 是什么意思?

[英]What’s does the [5.0] in Rails 5’s ActiveRecord::Migration mean?

我在 Rails 5 应用程序中创建的迁移将5.0传递给了一个方法:

class CreateVariableKeys < ActiveRecord::Migration[5.0]
  ...
end

我想知道[5.0]是什么意思。

它是ActiveRecord::Migration的类方法, 在此处定义。

它允许我们选择我们希望在4.25.0之间使用的迁移版本。 该方法抛出:

“未知的迁移版本......”

如果将不兼容的版本作为参数传递,则会出错。

生产就绪版本的ActiveRecord没有这种方法,因此一旦Rails 5退出测试版就会消失。

此博客也有更多信息

它似乎存在,因此当从rails 4移动到rails 5时,您不必升级旧的迁移。(迁移API中有一些小的更改)。

在 Ruby 中,您可以在 class 上定义一个名为[]的方法,如下所示:

class Foo
  def self.[](arg)
    puts arg
  end
end

并这样称呼它:

Foo["print me"]
--> "print me"

Foo[2.3]
--> 2.3

请参阅此答案以获取解释。

在 Rails 7.0 中, ActiveRecord::Migration[version_number]包含以下代码( 来源):

def self.[](version)
  Compatibility.find(version)
end

Compatibility::find ( source ) 在哪里找到适当的迁移版本,您可以使用rails c进行验证:

irb(main):001:0> ActiveRecord::Migration[5.2]
=> ActiveRecord::Migration::Compatibility::V5_2

希望有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM