2011-04-04 24 views
5

Soy nuevo en la programación de Rails. Estaba pensando en implementar la autenticación de ideto y omniauth por railscast tutorial. Como todavía no sé mongoid, estaba planeando comenzar con Activerecord. Eventualmente quiero usar Mongoid, creo.Migración de una base de datos de Activerecord a Mongoid

¿Cómo puedo hacer una migración de Activerecord a Mongoid?

Solo quiero empezar a trabajar con mi proyecto. Especialmente cuando tengo pocos usuarios, Activerecord probablemente sea suficiente. Nunca he hecho esto antes, así que con suerte alguien me puede decir si este enfoque será más problemático de lo que vale. ¿Tiene más sentido para mí tomar más tiempo ahora para aprender mongoid ahora?

Espero con ansias escuchar de usted los veteranos de Rails.

Respuesta

5

Construyes tus modelos, controladores y vistas exactamente como mongoid, como lo haces con ActiveRecord, por lo que hay poca diferencia. La gran diferencia radica en la manera en que se almacenan y recuperan sus datos, lo que afecta a sus modelos, lo que afecta directamente su código.

Una base de datos sin esquema como mongoDB no puede protegerlo como lo hace MySQL, y no hay una manera simple de hacer migraciones usando Mongoid.

Si está comenzando, probablemente debería ir con ActiveRecord solo porque la gran parte de la información que existe depende de usted usando ActiveRecord con una base de datos relacional.

Sin embargo, un cambio a mongo/mongoid definitivamente vale cualquier dolor percibido, pero a menos que haya utilizado una base de datos relacional y ActiveRecord, ¡puede que no aprecie lo increíble que puede ser mongo/mongoid!

+0

Gracias por el asesoramiento. Creo que probablemente vaya con un modelo de ActiveRecord por ahora. ¿Cuáles son algunas de las ventajas de Mongo en tu opinión? – Cyrus

+0

Modelos desacoplados, almacenes de datos OO y falta de migraciones. – BenB

+1

Argumentaría fuertemente que la falta de migraciones * no * es un beneficio. Estamos cambiando de Mongodb a Postgres en mi trabajo la próxima semana. Intenta buscar en Google "mongodb vs postgres" y lee esos resultados. Estoy preparando una publicación en el blog sobre eso, pero aún no está hecho – Houen

0

Creo que ActiveRecord es suficiente. Y piense en esas pequeñas gemas/complementos que son útiles pero no pueden trabajar con Mongoid. Tutoriales, screencasts: la gran mayoría de ellos se basan en ORM/Mysql predeterminado.

Por ahora no vale la pena pasar tiempo en Mongoid, creo.

0

... y no hay una manera simple de hacer migraciones usando Mongoid.

Esto no es cierto. En realidad, es bastante simple crear migraciones en Mongoid. Si desea agregar una columna a una tabla de base de datos, sólo tiene que añadir como un "campo" a la parte superior de la clase de modelo de este modo:

class User 
    include Mongoid::Document 

    field :email, type: String 
    field :phone, type: String 
    field :reputation, type: Integer 
end 

No hay Creación migraciones, sin rastrillar la base de datos. Simplemente agregue/elimine campos según sea necesario, reinicie el servidor y listo. Sin embargo, debe tener cuidado con la eliminación de campos, ya que pueden romper su código donde hizo referencia a ellos.

Cuestiones relacionadas