Frage

Ich habe einen vieles zu einer polymorphen Schienen Verein in meiner Rails-Anwendung für ein ‚Fall‘ Modell. Es gibt viele Dinge, die Fälle haben, so dass ich Zugriff auf den Fall jedes Ding by doing ‚thing_that_has_a_case.case‘ hat.

Doch ich versuche, den anderen Weg zu gehen, und ich bin nicht sicher, wie. Ich habe Zugang zu dem Fall, Objekt, aber ich möchte die Sache für den Zugriff auf das Gehäuse befindet. Haben Schienen haben einen Weg, dies zu tun? Ich konnte es mit einem hässlichen Schalter tun, die eine andere SQL für jede Art von Objekt finden tun, aber ich habe gehofft, Schienen würden einen besseren Weg. Dank!

War es hilfreich?

Lösung

Sie können so etwas zu Ihrem Fall Modell hinzufügen:

belongs_to :parent, :polymorphic => true

.. die davon ausgeht, Sie haben Felder parent_id und parent_type in Ihrem Fall-Modell (das erste Argument der belongs_to ändern, je nachdem, wie Sie diese Assoziation Felder genannt). Sobald Sie diese haben, sollten Sie nur in der Lage sein, beziehen für einen bestimmten Fall Instanz case.parent.

Und, nur um zu klären, die eine Seite dieser Beziehung hat so etwas wie:

has_many :cases, :as => :parent, :dependent => :destroy

(Ich gehe davon aus Sie bereits haben, dass auf der Basis Ihrer Beschreibung Arbeits)

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