คุณสามารถทำได้ด้วยวิธีนี้:
create_table :courses do |t|
t.string :name
t.references :transferrable_as
t.references :same_as
t.timestamps
end
หรือใช้t.belongs_to
เป็นนามแฝงสำหรับt.references
คุณไม่สามารถเพิ่มforeign_key: true
ในสองบรรทัดการอ้างอิงเหล่านั้น หากคุณต้องการทำเครื่องหมายเป็นคีย์ต่างประเทศในระดับฐานข้อมูลคุณต้องมีการโยกย้ายด้วยสิ่งนี้:
add_foreign_key :courses, :courses, column: :transferrable_as_id
add_foreign_key :courses, :courses, column: :same_as_id
ปรับปรุง
ใน Rails 5.1 ขึ้นไปคุณสามารถเพิ่ม Foreign Key ในการย้ายข้อมูลในcreate_table
บล็อกได้ดังนี้:
create_table :courses do |t|
t.string :name
t.references :transferrable_as, foreign_key: { to_table: 'courses' }
t.references :same_as, foreign_key: { to_table: 'courses' }
t.timestamps
end