我的问题是关于找到一种方便的方式来添加,删除,重命名和更改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的迁移指南中所述的程序,所以我需要每次添加一个新的文本字段,说输入N,我产生了它的迁移,这样
rails generate migration AddInputToProducts Input_n:string
然后我跑迁移
rake db:migrate
此过程的问题在于,一旦迁移生成并运行,我将不再有我用于迁移的确切名称的跟踪(在此示例中为Input_n),除非立即在我的RoR表单中为其创建条目并永远保持在那里。结果是我的桌子现在有多个我创建的项目,我想我会使用它们,但我实际上不再需要它们,我不记得它们的确切名称,我想要删除,重新使用,重命名或改变他们的类型。
我的问题是双重的:
- 是否有一个更好的,更方便的方式将列添加到现有的表,这将是比为先导描述运行的迁移更实用?
- 如何列出,删除,重命名或更改我的数据结构中现有列的类型?
给这些专栏一个适当的,有意义的名字怎么样?此外,你知道迁移可以恢复,对吧?他们有一个“下”的方法。 – 2012-03-02 19:30:44
@NiklasB。除非他们已经被提交,否则您应该创建一个新的(反向)迁移。 – 2012-03-02 19:31:59
@Andrew:是的,我没有想到这一点。 – 2012-03-02 19:35:13