has_many, belongs_to Assoziation wo has_many assoziiert Modell hat zwei alias fk in belongs_to associated_model
-
28-09-2019 - |
Frage
ich ein User-Modell, das viele Kämpfe hat. Kampf gehört Benutzer.
Es gibt zwei Fremdschlüssel in der Kampf-Tabelle, dass Verweis zurück an den Benutzer PK -. Challenger_id und challengee_id
Der Trick ist, wie kann ich den has_many Verein auf dem User-Modell schreiben, so dass es Kämpfe gibt, wo user_id = challenger_id oder challengee_id?
Lösung
Ich glaube, Sie zwei getrennte Verbände verwenden sollten, und ein Verfahren zu schaffen, alle Kämpfe zurückzukehren. Ist es nicht möglich, einen Tag werden Sie nur die fights
erhalten müssen, wo einige @user
die challenger
waren?
ich tun würde dies wie folgt aus:
class User < ActiveRecord::Base
has_many :fights_as_challenger, :foreign_key => :challenger_id,
:class_name => "Fight"
has_many :fights_as_challengee, :foreign_key => :challengee_id,
:class_name => "Fight"
def all_fights
self.fights_as_challenger + self.fights_as_challengee
end
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow