Nếu bạn cần tạo một user_id
thì sẽ là một giả định hợp lý rằng bạn đang tham chiếu đến một bảng người dùng. Trong trường hợp đó, việc di chuyển sẽ là:
rails generate migration AddUserRefToProducts user:references
Lệnh này sẽ tạo ra quá trình di chuyển sau:
class AddUserRefToProducts < ActiveRecord::Migration
def change
add_reference :user, :product, index: true
end
end
Sau khi chạy rake db:migrate
cả user_id
cột và chỉ mục sẽ được thêm vào products
bảng.
Trong trường hợp bạn chỉ cần thêm một chỉ mục vào một cột hiện có, chẳng hạn như name
một user
bảng, kỹ thuật sau có thể hữu ích:
rails generate migration AddIndexToUsers name:string:index
sẽ tạo ra sự di chuyển sau:
class AddIndexToUsers < ActiveRecord::Migration
def change
add_column :users, :name, :string
add_index :users, :name
end
end
Xóa add_column
dòng và chạy quá trình di chuyển.
Trong trường hợp được mô tả, bạn có thể đã đưa ra rails generate migration AddIndexIdToTable index_id:integer:index
lệnh và sau đó xóa add_column
dòng khỏi di chuyển đã tạo. Nhưng tôi khuyên bạn nên hoàn tác quá trình di chuyển ban đầu và thay vào đó thêm tham chiếu:
rails generate migration RemoveUserIdFromProducts user_id:integer
rails generate migration AddUserRefToProducts user:references