Wenn Sie eine user_id
erstellen müssen die Schaffung dann wäre es eine vernünftige Annahme, dass Sie eine Benutzertabelle referenzieren. In diesem Fall wird die Migration sein:
rails generate migration AddUserRefToProducts user:references
Dieser Befehl die folgende Migration generieren:
class AddUserRefToProducts < ActiveRecord::Migration
def change
add_reference :user, :product, index: true
end
end
Nach rake db:migrate
läuft sowohl eine Spalte und ein Index wird product
Tabelle hinzugefügt werden.
Falls Sie nur einen Index zu einer vorhandenen Spalte hinzufügen müssen, z. name
eine user
Tabelle, kann die folgende Technik hilfreich sein:
rails generate migration AddIndexToUsers name:string:index
die folgende Migration generieren:
class AddIndexToUsers < ActiveRecord::Migration
def change
add_column :users, :name, :string
add_index :users, :name
end
end
add_column
Zeilen löschen und die Migration ausführen.
In dem beschriebenen Fall hätten Sie den Befehl rails generate migration AddIndexIdToTable index_id:integer:index
ausgeben und dann die Zeile add_column
aus der generierten Migration löschen können. Aber ich würde eher empfohlen, die erste Migration rückgängig zu machen, und fügen Sie Referenz statt:
rails generate migration RemoveUserIdFromProducts user_id:integer
rails generate migration AddUserRefToProducts user:references
So renne ich einfach in meiner Konsole: Schienen erzeugen Migration AddIndexToTable? – user1611830
Ja, Sie können das tun, aber Sie müssen diese Migration anschließend bearbeiten, um den obigen Code widerzuspiegeln. –
ja sicher, danke! – user1611830