คุณจำเป็นต้องเพิ่มตารางเข้าร่วมการแยกจากกันพร้อมเพียงrestaurant_id
และuser_id
(ไม่มีคีย์หลัก) ในลำดับตัวอักษร
ก่อนอื่นให้เรียกใช้การย้ายข้อมูลจากนั้นแก้ไขไฟล์การย้ายข้อมูลที่สร้างขึ้น
ราง 3
rails g migration create_restaurants_users_table
ราง 4 :
rails g migration create_restaurants_users
ราง 5
rails g migration CreateJoinTableRestaurantUser restaurants users
จากเอกสาร :
นอกจากนี้ยังมีเครื่องกำเนิดไฟฟ้าซึ่งจะสร้างตารางการเข้าร่วมหาก JoinTable เป็นส่วนหนึ่งของชื่อ:
ไฟล์การย้ายข้อมูลของคุณ (โปรดสังเกตสิ่ง:id => false
นี้คือสิ่งที่ป้องกันการสร้างคีย์หลัก):
ราง 3
class CreateRestaurantsUsers < ActiveRecord::Migration
def self.up
create_table :restaurants_users, :id => false do |t|
t.references :restaurant
t.references :user
end
add_index :restaurants_users, [:restaurant_id, :user_id]
add_index :restaurants_users, :user_id
end
def self.down
drop_table :restaurants_users
end
end
ราง 4
class CreateRestaurantsUsers < ActiveRecord::Migration
def change
create_table :restaurants_users, id: false do |t|
t.belongs_to :restaurant
t.belongs_to :user
end
end
end
t.belongs_to
จะสร้างดัชนีที่จำเป็นโดยอัตโนมัติ def change
จะตรวจจับการย้ายไปข้างหน้าหรือย้อนกลับโดยอัตโนมัติโดยไม่จำเป็นต้องขึ้น / ลง
ราง 5
create_join_table :restaurants, :users do |t|
t.index [:restaurant_id, :user_id]
end
หมายเหตุ: นอกจากนี้ยังมีตัวเลือกสำหรับชื่อตารางกำหนดเองที่สามารถส่งผ่านเป็นพารามิเตอร์เพื่อ create_join_table table_name
เรียกว่า จากเอกสาร
ตามค่าเริ่มต้นชื่อของตารางการรวมมาจากการรวมกันของอาร์กิวเมนต์สองตัวแรกที่จัดเตรียมให้กับ create_join_table ตามลำดับตัวอักษร ในการกำหนดชื่อตารางเองให้ระบุตัวเลือก: table_name: