我是Rails的初学者,并试图了解rails迁移的工作原理。 我创建了一个脚手架,如:
script/generate scaffold Item col1:string col2:text
rake db:migrate
我想使用迁移添加另一个col4:
我按如下方式创建了一个迁移:
class AddCol4 < ActiveRecord::Migration
def self.up
add_column :items, :col4, :numeric
Item.reset_column_information
end
def self.down
remove_column :items, :col4
end
end
当我运行rake db:migrate时,会添加新列。但是视图不同步。 我应该手动将新列添加到视图中吗?有没有办法使用新表格列自动重新生成模型/视图?
抱歉,这是一个基本问题,但根据我对其他框架的经验,它应该是自动的。 关于迁移的rails指南并没有明确说明在执行迁移后同步应该如何工作。
答案 0 :(得分:2)
不幸的是,您需要手动修改视图。通过运行script/generate scaffold
命令创建视图。迁移仅更改数据库。从技术上讲,您可以重新运行scaffold命令并让它重新生成视图。它会询问您是否要覆盖以前的文件,但是,如果您使用此路径,则仍需要指定所需的所有列。你不能简单地在这里和那里添加一些。
如果您处于早期开发阶段,那么您可以选择这条路线。只需运行
script/destroy scaffold Item
然后重新运行
script generate scaffold Item col1:string col2 string col3:numeric
有一些动态脚手架扩展可用,例如ActiveScaffold,如果你创建的东西只有少数用户会看到,但我建议你自己做HTML,因为它总会按照你想要的方式出现。 / p>
我似乎无法找到任何其他动态脚手架插件。曾经有过不少......