Lassen Sie uns sagen, dass ich eine Tabelle in einer Rails-Migration zu erstellen, unter Angabe der ID-Spalte wegzulassen:Kann in einer Rails-Migration angegeben werden, dass eine neu hinzugefügte Spalte vor oder nach einer vorhandenen Spalte in der Tabelle sein sollte?
create_table :categories_posts, :id => false do |t|
t.column :category_id, :integer, :null => false
t.column :post_id, :integer, :null => false
end
Später ich entscheide, möchte ich eine ID-Spalte als Primärschlüssel hinzufügen, damit ich eine neue Migration erstellen:
class ChangeCategoriesToRichJoin < ActiveRecord::Migration
def self.up
add_column :categories_posts, :id, :primary_key
end
def self.down
remove_column :categories_posts, :id
end
end
Aber wenn ich am Tisch sehen, nachdem ich wandern, sieht es wie folgt aus:
category_id
post_id
id
die ID-Spalte in der letzten Position in der Tabelle ist, während kein normalerweise wäre eine ID-Spalte die erste.
Gibt es eine Möglichkeit, die ChangeCategoriesToRichJoin-Migration so zu ändern, dass sie auf der ID-Spalte besteht, die VOR der Spalte category_id in der Tabelle erstellt wird?
Oder muss ich die Tabelle löschen und die Spalte in der "create table" Definition hinzufügen?
Das ist mein Verdacht war. Danke für die Bestätigung. –