Sie müssen eine separate Verknüpfungstabelle mit nur einem restaurant_id
und user_id
(kein Primärschlüssel) in alphabetischer Reihenfolge hinzufügen .
Führen Sie zuerst Ihre Migrationen aus und bearbeiten Sie dann die generierte Migrationsdatei.
Schienen 3
rails g migration create_restaurants_users_table
Schienen 4 :
rails g migration create_restaurants_users
Schienen 5
rails g migration CreateJoinTableRestaurantUser restaurants users
Aus den Dokumenten :
Es gibt auch einen Generator, der Join-Tabellen erzeugt, wenn JoinTable Teil des Namens ist:
Ihre Migrationsdatei (beachten :id => false
Sie Folgendes: Sie verhindert die Erstellung eines Primärschlüssels):
Schienen 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
Schienen 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
erstellt automatisch die erforderlichen Indizes. def change
erkennt automatisch eine Vorwärts- oder Rückwärtsmigration, ohne dass ein Auf / Ab erforderlich ist.
Schienen 5
create_join_table :restaurants, :users do |t|
t.index [:restaurant_id, :user_id]
end
Hinweis: Es gibt auch eine Option für einen benutzerdefinierten Tabellennamen, der als Parameter an create_join_table übergeben werden kann table_name
. Aus den Dokumenten
Standardmäßig ergibt sich der Name der Verknüpfungstabelle aus der Vereinigung der ersten beiden Argumente für create_join_table in alphabetischer Reihenfolge. Geben Sie zum Anpassen des Tabellennamens die Option: table_name an: