这是一个关于如何在Ruby中定义方法和类以及如何阅读API文档的问题。简而言之:create_table
方法是如何定义/导入/继承的,因此它在ActiveRecord::Migration
中可用,代码如下:
class CreateProducts < ActiveRecord::Migration
def up
create_table :products do |t|
t.string :name
...
来自Java世界,我期望API docs提供指向定义所有内容的基类或mixin的链接。但是,如果我查看Migration
的页面,我会看到一些有用的手写文档,但没有指向create_table
最详细,最权威的定义的链接。我使用谷歌在ActiveRecord::ConnectionAdapters::SchemaStatements
中找到它,但即使查看这两个文件的源代码:
Migration in git
create_table in git
我看不到create_table
中Migration
如何被纳入范围。
答案 0 :(得分:1)
这些方法是在这个类中动态创建的:https://github.com/rails/rails/blob/d68e299167c8da07dc63a55197313b5c3396c3a4/activerecord/lib/active_record/migration/command_recorder.rb
他们在CommandRecorder
类中动态添加它们,然后这一行:
class Migration
autoload :CommandRecorder, 'active_record/migration/command_recorder'
使其可用于迁移类。