Route für die Basisklasse der STI-Klasse in Rails abrufen

8

Sagen wir, ich habe eine Rails App mit 3 Modellen, Person, Place und Thing. Nehmen wir an, das Thing verwendet die Vererbung einzelner Tabellen, also gibt es die Unterklassen FancyThing und ScaryThing. Dann sind Routen definiert mit map.resources :people, :places, :things . Es gibt also keine Controller für FancyThings und ScaryThings, die ThingsController beherrscht jeden Typ.

Jetzt sage ich, dass ich Code haben muss, der eine Liste von allem anzeigt, das Links zu ihnen hat. Wenn ich diesen Code in meiner Sicht habe:

%Vor%

Wenn der Gegenstand eine Person oder ein Ort ist, funktioniert das gut, polymorphic_path kümmert sich um die korrekte Route. Aber wenn der Gegenstand ein FancyThing oder ScaryThing ist, explodiert dies, weil es versucht, fancy_thing_path zu verwenden, für das es keine Route gibt. Ich möchte irgendwie thing_path verwenden. Idealerweise würde es eine Methode für Thing und / oder seine Unterklassen geben, die irgendwie anzeigt, dass die Unterklassen die Basisklasse verwenden sollten, um die Route zu erzeugen. Gibt es dafür eine elegante Lösung?

    
pjb3 31.03.2009, 19:44
quelle

3 Antworten

12

Das wird den Trick machen:

%Vor%

Dies verwendet die ActiveRecord-Funktion "wird", um eine "Up-Cast" aller Unterklassen von Thing zur Thing-Basisklasse durchzuführen.

    
Dave Ungerer 21.09.2009, 10:56
quelle
8

Versuchen Sie es mit

%Vor%     
Kirschstein 12.04.2009 23:27
quelle
0

Ich habe keine richtige Antwort, aber zumindest kann ich dieses Problem mit Nicht-DRY-Code lösen:

map.resources: dinge,: has_many = & gt; : Zeug map.resources: fancy_things,: controller = & gt; "Dinge",: has_many = & gt; : Zeug map.resources: scary_things,: controller = & gt; "Dinge",: has_many = & gt; : Zeug

Hoffe, das Problem wird bald in Rand korrigiert werden, da ich fancy_things nur verwalten möchte: Dinge Controller. Mit diesen Routen enden Sie mit URLs wie: / fancy_things / 1, während Sie vielleicht / sachen / 1

wollen     
Gravis 13.05.2009 15:19
quelle

Tags und Links