Ich habe eine User
und MeetOption
Tabelle. Dies ist eine viele-zu-viele-Beziehung, und ich war in der Lage eine Join-Tabelle mit dem create_join_table Befehl zu erstellen:Schienen 5: Hinzufügen Datensatz zu Join-Tabelle ohne Modell (has_and_belongs_to_many)
rails g migration CreateJoinTableUsersMeetOptions users meet_options
Diese Migrationsdatei generiert:
class CreateJoinTableUsersMeetOptions < ActiveRecord::Migration[5.0]
def change
create_join_table :users, :meet_options do |t|
# t.index [:user_id, :meet_option_id]
# t.index [:meet_option_id, :user_id]
end
end
end
Ich habe auch die Assoziation zwischen Modellen Benutzer und meet_option Verwendung has_and_belongs_to_many
class User < ActiveRecord::Base
has_and_belongs_to_many :meet_options
#More codes below
end
class MeetOption < ApplicationRecord
has_and_belongs_to_many :users
end
Die Zuordnung funktioniert einwandfrei, und ich kann zum Beispiel user.meet_options
in Rails-Konsole abfragen.
Meine Frage ist: Es gibt kein Modell für die beigefügte MeetOptionsUsers
Tabelle, also wie kann ich Datensätze hinzufügen? Im Moment muss ich manuell Zeilen hinzufügen, d. H. user_id = 1; meet_option_id = 2
, unter Verwendung einer GUI-Datenbanksoftware (Postico).
Gibt es eine Möglichkeit, Datensätze wie MeetOptionUser.create(user_id: 1, meet_option_id: 2)
in Rails-Konsole hinzuzufügen, genau wie wenn ein ActiveRecord-Modell zugeordnet ist?
Ausgezeichnete Antwort. Ich konnte den von Ihnen erwähnten Schaufeloperator '' 'verwenden, um Datensätze zur Join-Tabelle hinzuzufügen. 'option = MeetOption.find_by (Name: 'Mentorship')' ' user.meet_options << option' Es funktioniert auch mit mehreren meet_option Artikel sowie ' Optionen = MeetOption.all' 'Benutzer. meet_options << options' –
Ich habe viele Verwendungen von 'has_many: through' im gesamten Projekt, aber dieses Mal muss ich eine einfache Viele-zu-Viele-Beziehung haben, und die Join-Tabelle wird keine anderen Attribute enthalten. Gute Gedanken, danke. –
Kein Problem. Froh, dass ich Helfen kann. –