Nếu bạn cần để tạo ra một user_id
sau đó nó sẽ là một giả định hợp lý mà bạn đang tham khảo một bảng người dùng. Trong trường hợp này, sự di cư phải:
rails generate migration AddUserRefToProducts user:references
Lệnh này sẽ tạo ra sự di cư sau:
class AddUserRefToProducts < ActiveRecord::Migration
def change
add_reference :user, :product, index: true
end
end
Sau khi chạy rake db:migrate
cả một cột và một chỉ số sẽ được thêm vào product
bảng.
Trong trường hợp bạn chỉ cần thêm chỉ mục vào cột hiện tại, ví dụ: name
của một bảng user
, kỹ thuật sau đây có thể hữu ích:
rails generate migration AddIndexToUsers name:string:index
sẽ tạo ra sự di cư 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 di cư.
Trong trường hợp được mô tả, bạn có thể đã đưa ra lệnh rails generate migration AddIndexIdToTable index_id:integer:index
và sau đó xóa add_column
dòng khỏi di chuyển được tạo. Nhưng tôi thà khuyến khích để hoàn tác di chuyển ban đầu và thêm tài liệu tham khảo thay vì:
rails generate migration RemoveUserIdFromProducts user_id:integer
rails generate migration AddUserRefToProducts user:references
Nguồn
2014-07-08 23:01:43
Vì vậy, tôi chỉ cần chạy trong giao diện điều khiển của tôi: đường ray tạo ra di chuyển AddIndexToTable? – user1611830
Có, bạn có thể làm điều đó, nhưng bạn sẽ phải chỉnh sửa di chuyển đó sau đó để phản ánh mã trên. –
vâng, cảm ơn! – user1611830