En este artículo te explicaré como evitar un problema que seguramente tendrás cuando quieres crear un scaffold después haber instalado la Gema «Active Admin».

Si creaste un scaffold antes de instalar la gema activeadmin problablemente te diste cuenta que Rails automáticamente hizo el trabajo de crear las vistas, el modelo y el código de los métodos REST en tu controller tal como te muestra en esta imagen.

Pero después de instalar Activeadmin, intentaste crear otro scaffold y al momento de revisar el controller, obtuviste algo como esto, cierto? Un controller vacío!..bueno, esto es bastante desagradable! pero ocurre cuando instalas activeadmin. Esta gema trae ciertas dependencias hacia otra gema llamada «inherited_resources» en su version 1.6.0 (la cual es la verdadera culpable de esta situación) Esta gema lo que hace es extraer la funcionalidad más habitual de los controladores REST para evitar la duplicación del código, pero que lamentablemente según el mismo autor desde Rails 3 ya está deprecada:

«Since Rails 3 came out, I have no longer used Inherited Resources and it is no longer actively maintained»

– Gem Author

Solución:

Desinstalar la gema inherited_resources nos traerá problemas con ActiveAdmin, por lo que agregaremos un fix para seguir creando nuestros scaffolds normalmente y obtener el código auto-generado de nuestros métodos REST como necesitamos:

Para esto abre el archivo config/application.rb y después de:

config.active_record.raise_in_transactional_callbacks = true

Agregas el siguiente código:

 config.generators do |g|
      g.scaffold_controller "scaffold_controller"
 end

debe quedar como te muestro en este screenshot (click)

Reiniciar el servidor y desde la terminal:

rails s

Luego puedes volver a crear tus scaffolds y obtendrás el código auto-generado como antes!

Espero que este tutorial sea de utilidad y te haya evitado un mini-dolor de cabeza =)

KeepCoding!