Estoy haciendo un sistema de informes para mi aplicación. Creé un modelo ReportKind por ejemplo, pero como puedo informar muchas cosas, quería crear diferentes grupos de tipos de informes. Dado que comparten mucho comportamiento, estoy tratando de usar la herencia.Rails Modelo de herencia en formularios
Así que tienen el modelo principal:
model ReportKind << ActiveRecord::Base
end
y creó por ejemplo:
model UserReportKind << ReportKind
end
En mis report_kinds mesa tengo la columna de tipo, y hasta aquí todo está trabajando. Mi problema está en los formularios/controladores.
Cuando hago un ReportKind.new
, mi formulario es compilado con el prefijo '* report_kind *'. Si obtiene un UserReportKind, incluso a través de un , el formulario generará el prefijo 'user_report_kind'.
Esto ensucia todo en los controladores, ya que a veces tendré params [: report_kind], a veces params [: user_report_kind], y así sucesivamente para cada otra herencia que hice.
¿Hay alguna forma de obligarlo a usar el prefijo 'report_kind'? También tuve que forzar el atributo 'tipo' en el controlador, porque no obtuvo el valor directo del formulario, ¿hay alguna forma bonita de hacerlo?
El enrutamiento era otro problema, ya que intentaba crear rutas basadas en los nombres heredados de los modelos. Lo supero agregando los otros modelos en rutas que apuntan al mismo controlador.
<% = form.hidden_field: type,: value => 'UserReportKind'%> Funcionó para mí. – cider