【问题标题】:Is create_table in rails migrations a loop?rails迁移中的create_table是一个循环吗?
【发布时间】:2016-03-08 22:44:39
【问题描述】:

当我生成模型时:

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),我一直想知道哪个看起来和行为像一个循环。但我没有在 ruby​​ 语言中找到任何提到看起来像这样的循环的内容:

create_table() do
  # ...
end

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

【问题讨论】:

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


    【解决方案1】:

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

    来自doc

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

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

    create_table(:table_name) do
      # ...
    end
    

    【讨论】:

    【解决方案2】:

    这是一个 Rails 的东西,而不是 Ruby。 Rails 中确实有更多类似的语法。

    你可以使用link_to,form_for类似的方式。

    所有有一些做和反对的东西,似乎都是一个循环语法。

    link_to 语法在这里:

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

    form_for 语法在这里:

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

    【讨论】:

      猜你喜欢
      • 2018-06-25
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 2011-03-02
      • 2011-05-14
      相关资源
      最近更新 更多