Ruby Rails 4:将柱添加到现有脚手架
是的,这个问题在这里被淹没了,但大多数都是几年前的问题,我使用的是Rails 4。我尝试了几次,结果把我的rails应用搞砸了,所以我不会再冒险了 我已经创建了一个带有字段的脚手架,并对其模型、控制器和视图进行了许多更改。想象一下,当你为某人工作几周后,在你创建了一个脚手架之后,他们意识到他们错过了一个重要的专栏——lolRuby Rails 4:将柱添加到现有脚手架,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,是的,这个问题在这里被淹没了,但大多数都是几年前的问题,我使用的是Rails 4。我尝试了几次,结果把我的rails应用搞砸了,所以我不会再冒险了 我已经创建了一个带有字段的脚手架,并对其模型、控制器和视图进行了许多更改。想象一下,当你为某人工作几周后,在你创建了一个脚手架之后,他们意识到他们错过了一个重要的专栏——lol rails g scaffold Book a:string b:integer 如何轻松添加c:date 很少有例子显示运行迁移,也很少有人说编辑rails控制台。我对r
rails g scaffold Book a:string b:integer
如何轻松添加c:date
很少有例子显示运行迁移,也很少有人说编辑rails控制台。我对rails g迁移是否将这个添加到那个c:data中感到困惑
由于我仍在学习RoR,非常感谢您提供的任何答案 要添加新列,应创建迁移:
rails g migration add_c_to_books c:date
class AddCDEToBooks < ActiveRecord::Migration
def change
add_column :books, :c, :date
add_column :books, :d, :string
add_column :books, :e, :integer
end
end
class MyMigration < ActiveRecord::Migration
def change
end
end
(注意语法:add_x_to_y),这将把这个文件添加到db/migrate/timestamp_add_c_to_books.rb:
class AddCToBooks < ActiveRecord::Migration
def change
add_column :books, :c, :date
end
end
就这样
您可以通过以下方式添加多个列:
rails g migration add_c_d_e_to_books c:date d:string e:integer
这将创建以下迁移:
rails g migration add_c_to_books c:date
class AddCDEToBooks < ActiveRecord::Migration
def change
add_column :books, :c, :date
add_column :books, :d, :string
add_column :books, :e, :integer
end
end
class MyMigration < ActiveRecord::Migration
def change
end
end
这将导致清洁迁移:
rails g migration add_c_to_books c:date
class AddCDEToBooks < ActiveRecord::Migration
def change
add_column :books, :c, :date
add_column :books, :d, :string
add_column :books, :e, :integer
end
end
class MyMigration < ActiveRecord::Migration
def change
end
end
classmymigration
您可以在
defchange
中自由指定指令,这是什么:>编辑rails控制台?创建一个新的迁移是一个好办法。@RustamA.Gasanov一个据说可以编辑rails控制台的网站。你能发布一个关于“创建新迁移”的答案吗?所以基本上我只需要修改视图就可以了?如果我需要对该列(c)执行计算,它是创建另一个模型还是相同的book.rb
?@Sylar您需要修改要使用c
的所有位置。如果要将其添加到表单:将其添加到视图,则可能需要保存它-修改控制器(将c
添加到def book_params.permit
),如果要验证它-将相应的代码添加到book model等。您不需要创建新的m/v/c文件,只需修改现有的文件即可。谢谢!有没有其他方法可以一次性添加更多列?ie:c,d,e?@Sylar你当然可以。例如,尝试rails g migration将_c_d_e_添加到_booksc:date d:string e:integer
,并查看创建的文件。然后,您可以删除它并添加所需的迁移,因为您将了解它是如何工作的。@Sylar顺便说一句,在rails g migration…
命令中指定列并不受限制。您可以随意命名它,例如rails g migration my_awesome_migration
,它将使用emptydef change
方法创建新的迁移,并在其中添加您想要的任何代码。然后运行迁移以应用更改。