Migracion Rails4¶
Correciones generales de Rails¶
- config.whiny_nils option is deprecated and no longer works (environments)
- config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly
- DEPRECATION WARNING: You didn't set config.secret_key_base
- Las rutas con match deben especificar siempre el método usado mediante via: http://guides.rubyonrails.org/routing.html#http-verb-constraints
Correcciones de ActiveRecord¶
- El registro de sesiones en BBDD desaparece de activerecord y es necesario habilitarlo como gema:
gem 'activerecord-session_store'
- En ocasiones usabamos expresiones tipo:
condiciones_tareas = ["estado_tarea.activo IS TRUE AND proyecto_id IN (?) AND usuario_asignado_id = ?",@usuario_identificado.proyecto, @usuario_identificado.id]
estas expresiones devuelven un error puesto que ya no se convierte el array de proyectos en array de ids de proyectos. La expresión correcta ahora implica usar pluck:
condiciones_tareas = ["estado_tarea.activo IS TRUE AND proyecto_id IN (?) AND usuario_asignado_id = ?", @usuario_identificado.proyecto.pluck(:id), @usuario_identificado.id]
- DEPRECATION WARNING: Relation#all is deprecated. Este error surge en expresiones como
agentes = [[_("Todos"), "todos"]] + Agente.all(:order => "nombre", :conditions => {:financiador => true }).collect{|p| ...
y hay que reescribirlo como:
agentes = [[_("Todos"), "todos"]] + Agente.where(financiador: true).order(:nombre).collect{|p| ...
- DEPRECATION WARNING: The following options in your Usuario.has_many :libro declaration are deprecated: :uniq. Please use a scope block instead.
- el método all no admite parámetros por lo que hay que sustituirlos por las combinaciones joins, where, order, ...
- desaparecen los métodos find_or_create_by_"atributo" y su nueva sintaxis es find_or_create_by(atributo1: valor1, atributo2: valor2, ...): https://apidock.com/rails/v4.2.7/ActiveRecord/Relation/find_or_create_by
- no es válido el método sort para ordenar consultas de activerecord y hay que usar order:
NoMethodError (undefined method `sort!' for #<ActiveRecord::Associations::CollectionProxy []>)
- ActiveRecord::Relation desde Rails 4.1 ya no es un array y carece de métodos reject!, map!, ... . Hay que convertirlo a array (.to_a) para aplicarlos: http://guides.rubyonrails.org/4_1_release_notes.html#active-record-removals
Correcciones en helpers, vistas y gemas gráficas:¶
- La gema ajax-chosen-rails tiene dependencias que impiden rails >= 4 . Se carga chosen-rails de tsechingho
gem 'chosen-rails', git: 'https://github.com/tsechingho/chosen-rails.git'
- OJO: Deshabilitamos calendar-date-select. PENDIENTE: Los helpers hay que adaptarlos para usar el input type="date"
- OJO: Deshabilitamos la gema de recaptcha. PENDIENTE: Verificar una gema que la sustituya y el codigo comentado en la vista de login de usuario
- Los helpers de construcción de formularios (selector, texto, ...) no funcionan. Internamente utilizan helpers de rails (selec_tag, text_field, ...) y por como los estamos usando, estos no crean correctamente los atributos "name", con lo que los formularios se envian sin valores.