当我生成模型时:
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创建的?如果像这样的循环被创建并且没有内置,他们是如何做到这一点的(即:如何创建看起来像这样的自定义循环)?
答案 0 :(得分:3)
不,这不是一个循环。 create_table只是ActiveRecord::ConnectionAdapters::SchemaStatements类中的方法。
来自doc:
使用create_table有两种方法。你可以使用该块 形式或常规形式。
以下只是使用create_table
方法的 阻止格式 ,您可以将块传递给它:
create_table(:table_name) do
# ...
end
答案 1 :(得分:0)
这不是红宝石的东西。你在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 %>