当我生成一个模型时:
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
我发现了每个循环、times循环、while循环等…以及许多其他循环,但我从未见过这个循环或任何在实际Ruby语言中看起来相似的循环。这实际上是我忽略的Ruby语言的一部分吗?还是由ActiveRecord和/或Rails创建的?如果创建了这样一个循环,但没有内置,他们是如何做到的(即:如何创建看起来像这样的自定义循环)?
来自文档:
使用create_table有两种方法。您可以使用块形式或常规形式。
以下只是使用create_table
方法的块形式,您可以将块传递给它:
create_table(:table_name) do
# ...
end
这是rails的东西,而不是ruby。rails中确实有更多类似的语法。
您可以以类似的方式使用link_to
、form_for
。
所有有一些do和object的东西,看起来都像一个循环语法。
此处的link_to语法:
link_to(url, html_options = {}) do
# name
end
此处的form_for语法:
<%= form_for :person do |f| %>
<%= f.submit %>
<% end %>