【发布时间】:2012-03-21 07:18:43
【问题描述】:
我的问题是寻找一种方便的方法来添加、删除、重命名和更改 SQLite 数据结构中的列类型。
我有一个 Ruby on Rails 表单,它有多个输入文本字段,如下所示(简化):
<%= form_for(@Product, :html => {:name => "product_name", :id => "product_id"}) do |form| %>
<div class="field">
<%= form.flag "Input 1" %>
<%= form.text_field :Input_1 %>
<%= form.flag "Input 2" %>
<%= form.text_field :Input_2 %>
..., etc.
</div>
<% end %>
到目前为止,我遵循了 RoR 迁移指南中描述的过程,所以每次我需要添加一个新的文本字段时,比如 Input n,我都会为它生成一个迁移,就像这样
rails generate migration AddInputToProducts Input_n:string
然后我运行迁移
rake db:migrate
这个过程的问题是,一旦生成并运行了迁移,我就再也找不到我用于迁移的确切名称(本例中为 Input_n),除非我立即在我的 RoR 中为其创建一个条目形成并永远保存在那里。结果是我的表现在有多个条目,我认为我会使用它们,但实际上我不再需要它们,我不记得它们的确切名称,我想删除、重新使用、重命名或改变他们的类型。
我的问题有两个:
- 是否有更好、更方便的方法向现有表添加列,并且比按照指南中所述运行迁移更实用?
- 如何列出、删除、重命名或更改数据结构中现有列的类型?
【问题讨论】:
-
给这些列取一个合适的、有意义的名字怎么样?另外,您知道迁移可以恢复,对吗?他们有一个
down方法。 -
@NiklasB。除非它们已经提交,否则您应该创建一个新的(反向)迁移。
-
@Andrew:是的,我没想到。
-
无论我为使用有意义的名称付出了多少努力,我总是会在“_”、“-”、复数等方面犯错,最终弄乱我的名字。另外要编写反向迁移,我必须记住我使用的确切名称!
标签: ruby-on-rails sqlite migration