create_table中的block变量来自Rails迁移?

时间:2015-09-24 05:45:25

标签: ruby-on-rails

rails generate model User email:string password:string

查看已创建的迁移:

class CreateUsers < ActiveRecord::Base
  def change
    create_table :users do |t|
      t.string :email
      t.string :password
      t.timestamps
    end
  end
end

从书&#34; Beginning Rails 4&#34;:&#34;这是标准的迁移费用。在更改定义中,使用create_table方法创建新用户表。 新表对象产生到块变量t ,在其上调用字符串方法来创建每一列&#34;

我想更详细地解释块变量t的确切位置。它是由create_table方法返回的(我想不是,但我不能想到其他任何东西)?

2 个答案:

答案 0 :(得分:1)

来自文档:

# create_table() passes a TableDefinition object to the block.
# This form will not only create the table, but also columns for the
# table.

所以你看到的t实际上是TableDefinition类的一个对象。您可以在此处详细了解此课程:http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html

答案 1 :(得分:0)

您可以在doend之间看到一个区块。在这种情况下,块变量在此处create_table :users do |t|之间声明|