首页 > 解决方案 > 如何理解“ActiveRecord::Migration[5.2]”rails / ruby

问题描述

但是什么意思ActiveRecord::Migration[5.2]

标签: ruby-on-railsrubyruby-on-rails-5

解决方案


Ruby 允许你定义这样的[]方法:

  class Foo
    def [](bar)
      puts bar
    end
  end

然后你可以这样做:

x = Foo.new
foo["baz"] # prints baz

这也适用于类方法[],而不仅仅是实例:

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

现在Foo["a"]打印一个。

Rails 通过这里的代码利用了这一点:https ://github.com/rails/rails/blob/66cabeda2c46c582d19738e1318be8d59584cc5b/activerecord/lib/active_record/migration.rb#L543

因此,[5.2]在您的示例中,它不是一个内部带有浮点数的数组,而是对ActiveRecord::Migration.[]以 5.2 作为参数的方法的调用。


推荐阅读