Powiedz, że mam aplikację szyn z 3 modelami, osobą, miejscem i rzeczą. Say the Thing używa dziedziczenia pojedynczej tabeli, więc istnieją podklasy FancyThing i ScaryThing. Następnie są zdefiniowane trasy z map.resources :people, :places, :things
. Więc nie ma kontrolerów dla FancyThings i ScaryThings, The ThingsController obsługuje oba typy.Uzyskaj trasę do klasy bazowej klasy STI w szynach
Teraz mów, że muszę mieć kod, który pokazuje listę czegokolwiek ma do nich linki. Jeśli mam ten kod w moim zdaniem:
<% @items.each do |item| %>
<%= link_to item.name, item %>
<% end %>
Jeśli pozycja jest osoba lub miejsce, to działa prawidłowo, polymorphic_path
dba wygenerowania poprawną trasę. Ale jeśli przedmiot jest FancyThing lub ScaryThing, to wieje, bo będzie próbował użyć fancy_thing_path
, do którego nie ma trasy. Chcę w jakiś sposób użyć go thing_path
. Idealnie byłoby na Thing i/lub jej podklasach metoda, która jakoś wskazuje, że podklasy powinny używać klasy bazowej do generowania trasy. Czy istnieje na to eleganckie rozwiązanie?
To jest [otwarty bilet] (http://dev.rubyonrails.org/ticket/10454) na tworzenie szyn. Zobacz bilet na sugestie, jak sobie z tym poradzić. – MarkusQ