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?

War es hilfreich?

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
scroll top