WHat对象被传递到Ruby on Rails中的create_table块

时间:2011-08-26 21:47:06

标签: ruby-on-rails ruby

在rails中生成模型时,它会创建一个框架迁移文件。

in has

create_table :model_names do |t|
  t.string :name
  t.string :address
  t.timestamps
end

传递什么对象为t。

当我读到本书的这一部分时,我想知道它是什么,但它从未解释过。后来我在form_for帮助器中学会了将|f|传递到它的块中,f是一个FormBuilder对象,这让我来到这里问。我的意思是,它显然并不重要,但是当缺少知识时,它会让我感到烦恼。

2 个答案:

答案 0 :(得分:6)

答案是ActiveRecord::ConnectionAdapters::TableDefinition 我怎么知道?

class CreateFoos < ActiveRecord::Migration
  def change
    create_table :foos do |t|
      puts "the answer is: " + t.class.to_s
      t.string :foo

      t.timestamps
    end
  end
end

答案 1 :(得分:1)

使用pry(或ruby调试器)是一种有趣,简单的探索方式。

class CreateFoos < ActiveRecord::Migration
  def change
    create_table :foos do |t|
      binding.pry  
    end
  end
end
apidock docs之类的东西经常在实际文本中提供答案。当他们不这样做时,查看源通常会以相对较短的顺序得出答案(在这种情况下确实如此)。