Rails - Join-Tabelle mit Attributen (HABTM + Through) Aber wie erstelle ich / löschen Aufzeichnungen?

StackOverflow https://stackoverflow.com/questions/4620634

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?

War es hilfreich?

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]

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top