Anda perlu menambahkan tabel gabungan terpisah hanya dengan a restaurant_id
dan user_id
(tanpa kunci utama), dalam urutan abjad .
Pertama-tama, jalankan migrasi Anda, lalu edit file migrasi yang dibuat.
Rel 3
rails g migration create_restaurants_users_table
Rel 4 :
rails g migration create_restaurants_users
Rel 5
rails g migration CreateJoinTableRestaurantUser restaurants users
Dari dokumen :
Ada juga generator yang akan menghasilkan tabel gabungan jika JoinTable adalah bagian dari namanya:
File migrasi Anda (perhatikan :id => false
; itu yang mencegah pembuatan kunci utama):
Rel 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
Rel 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
secara otomatis akan membuat indeks yang diperlukan. def change
akan otomatis mendeteksi migrasi maju atau mundur, tidak perlu naik / turun.
Rel 5
create_join_table :restaurants, :users do |t|
t.index [:restaurant_id, :user_id]
end
Catatan: Ada juga opsi untuk nama tabel khusus yang dapat diteruskan sebagai parameter untuk dipanggil create_join_table table_name
. Dari dokumen
Secara default, nama tabel gabungan berasal dari gabungan dua argumen pertama yang disediakan untuk create_join_table, dalam urutan abjad. Untuk menyesuaikan nama tabel, berikan opsi: nama_tabel: