Quiero mostrar una lista de selección de subclases de MyModel en una vista. No está funcionando todavía, así que para el control de la cordura, incluí esto en mi punto de vista:RoR: MyModel.descendants devuelve [] en una vista después de la primera llamada?
<%= MyModel.descendants %>
El primera tiempo me hacen esta página después de reiniciar el servidor, se muestra la lista de los descendientes (hay seis) Todos posteriores veces, aparece como una lista vacía []
.
Fwiw, que tiene declaración require
en mis inicializadores:
Dir[Rails.root.join("app/models/my_models/**/*.rb").to_s].each {|f| require f}
... y he verificado que están siendo requeridos.
Lo que el @ ($% & está pasando?
+1 para la explicación lúcida de lo que está sucediendo, gracias. Desafortunadamente, mis subclases tienen nombres de "acrónimos", como "PGEService" con nombres de archivo como "pge_service.rb". No estoy listo para cambiar el nombre de mis archivos a 'p_g_e_service.rb', ¡al menos no todavía! –
Bueno, si sus archivos se llaman PGEService.rb, puede simplemente usar el nombre del archivo (sin el '.clasifique'), pero no veo ninguna solución fácil si todavía es 'pge_service.rb' ... A menos que, por supuesto, haga algo como' s = File.basename (f, '. rb'). split ('_ '); class_name = s.first.upcase + s.last.classify; MyModels.const_get (class_name) '. Sí, un poco feo, lo sé. – Wam
hablando estrictamente, HIZO responder mi pregunta de "qué está pasando". Entonces te mereces la marca de verificación. He refinado mi pregunta, pero la publicaré como una pregunta separada. ¡Adelante! –