Migración de Modelos de Active Record a Mongoid

Clase 5 de 34Curso Intermedio de Ruby on Rails

Resumen

¿Cómo migrar modelos de Active Record a Mongoid?

Migrar modelos de Active Record a Mongoid es un proceso fundamental para aquellos que buscan mejorar la funcionalidad y flexibilidad de sus aplicaciones. Este cambio implica no solo la adopción de una nueva base de datos, sino también la revisión y adaptación de los modelos de datos anteriores. En este artículo, te guiaré paso a paso en este proceso para que puedas hacerlo de manera eficiente y eficaz.

¿Cuáles son los primeros pasos en la migración?

Para comenzar, debes dirigirte al directorio models de tu aplicación donde se encuentran todos los modelos que fueron creados previamente. Identifica aquellos asociados a tareas y al sistema de inicio de sesión, como el modelo user. Una parte crucial del proceso es eliminar el archivo application_record, ya que este archivo define una clase abstracta utilizada por Active Record que no será necesaria en Mongoid.

¿Cómo reemplazar la herencia por la composición de módulos?

Mongoid ofrece una manera diferente de estructura en comparación con Active Record. No se utiliza la herencia para establecer conexiones, sino la composición de módulos. Empezaremos migrando el modelo category:

class Category
  include Mongoid::Document
  include Mongoid::Timestamps

  field :name, type: String
  field :description, type: String
end

¿Qué implica la migración del modelo note?

Para el modelo note, además de reemplazar la herencia, es importante considerar las asociaciones de tipo belongs_to. En Mongoid, no es necesario definir explícitamente las claves foráneas, ya que se crean automáticamente:

class Note
  include Mongoid::Document
  include Mongoid::Timestamps

  belongs_to :user
  belongs_to :task

  field :body, type: String
end

¿Cómo se maneja el método enum en Mongoid?

El modelo participante presenta un desafío particular debido al uso del método enum en Active Record. Mongoid no trata los enums de forma nativa, por lo que debemos crear una representación personalizada:

class Participante
  include Mongoid::Document
  include Mongoid::Timestamps

  ROLES = { admin: 0, user: 1 }

  field :role, type: Integer

  def self.roles
    ROLES
  end
end

¿Qué hay que tener en cuenta al finalizar la migración?

Al finalizar la migración de tus modelos, es importante revisar y eliminar comentarios innecesarios. Ejecuta tu suite de pruebas para identificar posibles errores que se puedan corregir oportunamente. La migración a Mongoid no solo moderniza tu aplicación, sino que también mejora su rendimiento y escalabilidad. ¡Sigue adelante y continua aprendiendo siempre!