Rails 3 Herited_Resources ignora la configuración de 'valores predeterminados'
-
28-10-2019 - |
Pregunta
Estoy usando recursos heredados para mis controladores. Y ahora tengo modelo:
class Sms < ActiveRecord::Base
end
Y quiero el controlador para ello, donde hago valores predeterminados:
class Admin::SmsesController < Admin::InheritedResources
defaults :resource_class => Sms,
:collection_name => 'smses',
:instance_name => 'sms'
end
Pero no puedo entender por qué todavía está tratando de obtener el modelo "SMSE":
NameError in Admin::SmsesController#index
uninitialized constant Smse
Por favor ayuda.
Solución
El problema es que Rails no sabe que el plural de los SMS es SMSS. Si vas a la consola de Rails, deberías ver eso:
> "Sms".pluralize
=> "Sms"
> "Smses".singularize
=> "Smse"
Cuando se enfrenta a un plural que no reconoce, Singularize simplemente trunca la "S" final, por lo que su aplicación está buscando un modelo SMSE inexistente.
Se ahorrará muchos dolores de cabeza configurando rieles para pluralizar/singularizar sus modelos correctamente. En el archivo config inicializadores inflexss.rb debe encontrar algunos ejemplos de cómo hacer esto. Lo que quieres es:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'sms', 'smses'
end
Entonces no creo que deba necesitar poner la opción predeterminada allí en absoluto; todo debería funcionar fuera de la caja.