在rails迁移上排序的架构字段

时间:2012-04-15 20:33:47

标签: ruby-on-rails ruby-on-rails-3

通过迁移向表中添加一些字段时,可以告诉rails将id列放在架构顶部,将timepstamp放在底部吗?

我想要的是在控制台上使用rails时始终将这些字段放在相同的位置,我知道可以在schema.rb中重新排序它们并重新加载它但我正在寻找一种适合生产的更清洁的方法环境也是如此。

谢谢

2 个答案:

答案 0 :(得分:4)

你可以从Rails 2.3.6 +中获得这样的东西(可能目前仅在Mysql中):

add_column :table_name, :column_name, :column_type, after: :other_column_name

change_table :the_table do |t|
  t.column_type :column_name, after: :other_column_name
end

来源:
- In a Rails Migration (MySQL), can you specify what position a new column should be?
- https://rails.lighthouseapp.com/projects/8994/tickets/3286-patch-add-support-for-mysql-column-positioning-to-migrations

答案 1 :(得分:2)

您可能对fix-db-schema-conflicts gem感兴趣,它会在生成db/schema.rb文件时按字母顺序自动对列进行排序。

时间戳不一定是列表中的最后一个,但架构不依赖于添加列的顺序(通过迁移)。