Rails - Join-Tabelle mit Attributen (HABTM + Through) Aber wie erstelle ich / löschen Aufzeichnungen?
-
30-09-2019 - |
Frage
Ich habe ein User-Modell und Interesse Modell durch eine Join-Tabelle verbunden wird genannt Wahl (Details siehe unten). Ich verwende die HABTM Beziehung mit durch, da ich ein Attribut in der Tabelle haben kommen auch.
User.rb
has_many :choices
has_many :interests, :through => :choices
Interest.rb
has_many :choices
has_many :users, :through => :choices
Choice.rb
belongs_to :user
belongs_to :interest
Die Frage ist also, wie kann ich hinzufügen, Datensätze zu dieser neu geschaffenen Wahltabelle. Zum Beispiel =>
@user = User.find(1)
@interest = Interest.find(1)
????? Choice << user.id + interest.id + 4(score attribute) ??????
Der letzte Teil ist der Teil, ich habe ein Problem with..I diese drei Parameter haben und nicht, wie man sich in hinzufügen und was die Syntax war?
Lösung
Sie haben ein paar Optionen für eine Auswahl hinzufügen, aber wahrscheinlich das, was am meisten Sinn macht wären Auswahl hinzufügen, indem Scoping den Benutzers Beispiel:
Unter der Annahme:
@user = User.find(1)
@interest = Interest.find(1)
Sie können eine Auswahl hinzufügen, etwa so:
@user.choices.create(:interest => @interest, :score => 4)
Sie können auch in Ihrem Controller so etwas tun:
def create
@choice = @user.choices.build(params[:choice])
if @choice.save
# saved
else
# not saved
end
end
Dies setzt voraus, Ihre Form hat Felder für choice[:interest_id]
und choice[:score]