Frage

Ich habe eine Rails-Anwendung, die ich in dem Prozess des Entwerfens bin. Ich habe ein separates Modell, das nur 2 von einem Modell verknüpfen muss. Insbesondere habe meine "Bewertung" s 2 "Mitglied" s, Evaluator und ein evaluatee. Sie haben auch ein paar andere Stücke von Informationen, auch, aber sie sollten nicht auf diese relevant sein.

Was ist der beste Weg, dies zu vertreten? Würden zwei Fremdschlüssel in der Auswertung am besten sein, oder ein viele-viele-Beziehung zwischen den Bewertungen und den Mitgliedern? Gäbe es eine andere Option, die noch besser funktionieren würde?

Ich würde denken, zunächst viele zu viele, aber da gibt es eine definierte Anzahl auf einer Seite der Beziehung ist die Frage ich die Anwendbarkeit hier. Mein Wissen impliziert many-to-many allgemein, dass die Zahl auf jeder Seite der Beziehung variabel ist.

War es hilfreich?

Lösung

Sie wollen wahrscheinlich zwei verschiedene Verbände, die möglicherweise mit der gleichen Klasse:

class Member < ActiveRecord::Base
  has_many :evaluations_out, :class_name => 'evaluation', :as => :evaluator
  has_many :evaluations_in, :class_name => 'evaluation', :as => :evaluatee
end

class Evaluation < ActiveRecord::Base
  belongs_to :evaluator, :class_name => 'member'
  belongs_to :evaluatee, :class_name => 'member'
end

Andere Tipps

Ich habe es selbst nicht getestet, und es könnte ein wenig abenteuerlich klingen, aber ich denke, dass funktionieren könnte:

Evaluation Modell

class Evaluation < ActiveRecord::Base 
  belongs_to :evaluator, :class_name => "Member", :foreign_key => "evaluator_id"
  belongs_to :evaluatee, :class_name => "Member", :foreign_key => "evaluatee_id"

end

Mitglied Modell

class Member < ActiveRecord::Base
  has_many :evaluators, :class_name => "Evaluation", :foreign_key => "evaluator_id"
  has_many :evaluatees, :class_name => "Evaluation", :foreign_key => "evaluatee_id"

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