这种行为非常酷,因为它使编写“未来证明”的迁移变得容易,其中迁移内联定义模型类,以防将来从代码库中删除该类。但是它是如何工作的呢?
$ rails c
pry(main)> User.methods.count
=> 686
pry(main)> class User < ActiveRecord::Base; end
=> nil
pry(main)> User.methods.count
=> 686
这里是一次迁移:
class FrobulateUsers < ActiveRecord::Migration
puts User.methods.count
class User < ActiveRecord::Base
end
puts User.methods.count
...
end
当我运行它时:
$ rake db:migrate
687
666
迁移中为什么方法消失了,但在控制台中没有?
has_many
是缺失的。我猜剩下的方法是在从ActiveRecord::Base继承的空类中定义时获得的。 - Gabe Kopley