หากคุณต้องการสร้างuser_id
มันจะเป็นข้อสันนิษฐานที่สมเหตุสมผลว่าคุณกำลังอ้างถึงตารางผู้ใช้ ในกรณีนี้การโยกย้ายจะต้อง:
rails generate migration AddUserRefToProducts user:references
คำสั่งนี้จะสร้างการย้ายข้อมูลต่อไปนี้:
class AddUserRefToProducts < ActiveRecord::Migration
def change
add_reference :user, :product, index: true
end
end
หลังจากรันrake db:migrate
ทั้งuser_id
คอลัมน์และดัชนีจะถูกเพิ่มลงในproducts
ตาราง
ในกรณีที่คุณเพียงแค่ต้องเพิ่มดัชนีเพื่อคอลัมน์ที่มีอยู่เช่นname
ของuser
ตารางเทคนิคต่อไปนี้อาจจะมีประโยชน์:
rails generate migration AddIndexToUsers name:string:index
จะสร้างการย้ายข้อมูลต่อไปนี้:
class AddIndexToUsers < ActiveRecord::Migration
def change
add_column :users, :name, :string
add_index :users, :name
end
end
ลบadd_column
บรรทัดและเรียกใช้การย้ายข้อมูล
ในกรณีที่อธิบายไว้คุณสามารถออกrails generate migration AddIndexIdToTable index_id:integer:index
คำสั่งแล้วลบadd_column
บรรทัดจากการย้ายข้อมูลที่สร้างขึ้น แต่ขอแนะนำให้เลิกทำการย้ายข้อมูลครั้งแรกและเพิ่มข้อมูลอ้างอิงแทน:
rails generate migration RemoveUserIdFromProducts user_id:integer
rails generate migration AddUserRefToProducts user:references