[英]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.2
和5.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.