rails迁移中的create_table是一个循环吗?

时间:2015-12-04 04:28:10

标签: ruby-on-rails ruby loops ruby-on-rails-4 database-migration

当我生成模型时:

rails g model Post title content favorite:boolean

Rails创建一个如下所示的迁移文件:

class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :title
      t.string :content
      t.boolean :favorite

      t.timestamps null: false
    end
  end
end

这个create_table(:posts)我总是想知道哪个外观和行为就像一个循环。但我还没有发现红宝石语中的任何东西提到了一个看起来像这样的循环:

create_table() do
  # ...
end

我发现每个循环,循环次数,循环等等......以及许多其他循环,但我从未见过这个循环或任何在实际Ruby语言中看起来相似的循环。这实际上是我忽略的Ruby语言的一部分还是由ActiveRecord和/或Rails创建的?如果像这样的循环被创建并且没有内置,他们是如何做到这一点的(即:如何创建看起来像这样的自定义循环)?

2 个答案:

答案 0 :(得分:3)

不,这不是一个循环。 create_table只是ActiveRecord::ConnectionAdapters::SchemaStatements类中的方法

来自doc

  

使用create_table有两种方法。你可以使用该块   形式或常规形式。

以下只是使用create_table方法的 阻止格式 ,您可以将块传递给它:

create_table(:table_name) do
  # ...
end

答案 1 :(得分:0)

这不是红宝石的东西。你在rails中确实有类似的语法。

您可以类似的方式使用link_toform_for

所有具有do和object的东西,似乎都是循环语法。

link_to语法:

link_to(url, html_options = {}) do
  # name
end

form_for语法:

<%= form_for :person do |f| %>
  <%= f.submit %>
<% end %>