Supongamos que tengo una aplicación de rieles con 3 modelos, Person, Place y Thing. Supongamos que Thing utiliza la herencia de tabla única, por lo que hay subclases FancyThing y ScaryThing. Luego hay rutas definidas con map.resources :people, :places, :things
. Entonces, no hay controladores para FancyThings y ScaryThings, el ThingsController maneja cualquier tipo.Obtener ruta para la clase base de la clase STI en Rails
Ahora digo que necesito tener un código que muestre una lista de cualquier cosa que tenga enlaces a ellos. Si tengo este código en mi opinión:
<% @items.each do |item| %>
<%= link_to item.name, item %>
<% end %>
Si el artículo es una persona o un lugar, esto funciona bien, polymorphic_path
se encarga de generar la ruta correcta. Pero si el artículo es un FancyThing o un ScaryThing, esto explota, porque tratará de usar fancy_thing_path
, que no hay ninguna ruta para. Quiero de alguna manera hacer que use thing_path
. Idealmente, habría un método en Thing y/o sus subclases que de alguna manera indica que las subclases deberían usar la clase base para generar la ruta. ¿Hay una solución elegante para esto?
Este es un [boleto abierto] (http://dev.rubyonrails.org/ticket/10454) en el desarrollo de rieles. Consulte el ticket para obtener sugerencias sobre cómo lidiar con él. – MarkusQ