移行によってテーブルにいくつかのフィールドを追加するときに、スキーマの上部にid列を保持し、下部にタイムスタンプを保持するようにrailsに指示することは可能ですか?
コンソールでレールを操作するときは、常にこのフィールドを同じ位置に配置する必要があります。schema.rbでフィールドを並べ替えてリロードできることはわかっていますが、実稼働環境にも適したよりクリーンなアプローチを探しています。
ありがとうございました
移行によってテーブルにいくつかのフィールドを追加するときに、スキーマの上部にid列を保持し、下部にタイムスタンプを保持するようにrailsに指示することは可能ですか?
コンソールでレールを操作するときは、常にこのフィールドを同じ位置に配置する必要があります。schema.rbでフィールドを並べ替えてリロードできることはわかっていますが、実稼働環境にも適したよりクリーンなアプローチを探しています。
ありがとうございました
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
ソース:
- Rails Migration (MySQL) では、新しい列の位置を指定できますか?
- https://rails.lighthouseapp.com/projects/8994/tickets/3286-patch-add-support-for-mysql-column-positioning-to-migrations
ファイルの生成中に列をアルファベット順に自動的にソートする fix-db-schema-conflicts gemに興味があるかもしれませんdb/schema.rb
。
タイムスタンプは必ずしもリストの最後にあるとは限りませんが、スキーマは (移行によって) 列が追加された順序に依存しません。