5

La idea de DataMapper es definitely better que ActiveRecord. Tiene una API para una variedad de tiendas de datos, incluidas las tiendas RDBMS y NoSQL. DataMapper es mucho más inteligente que ActiveRecord. Tiene "Carga Eficiente Estratégica". Esta función borra por sí solo el "Problema de consulta N + 1". Además, permite la carga lenta de campos pesados ​​como la propiedad Text. DataMapper le permite crear y buscar cualquier gráfico de objeto complejo simplemente proporcionando un hash de condiciones anidado. ActiveRecods no es adecuado para asociaciones en producción. incluir método es feo y no configurable. En octubre de 2010, Josh Symonds hizo un patch for this method para permitir que los campos se excluyan de la carga ansiosa. Pero ese camino fue ignorado y hoy en rails3 tenemos el mismo método feo de inclusión.Use DataMapper en lugar de ActiveRecord

Incluso en Rails3 con brillante AREL, ActiveRecord está lejos de ser el mejor para los rieles. Usted puede decir "wow, esa nueva gema metawhere permite escribir buen código como Article.where(:title.matches => 'Hello%', :created_at.gt => 3.days.ago)". Pero espera ... ¡DataMapper es compatible con esto de una caja! Tal vez en lugar de modificar ActiveRecord para que se parezca a DataMapper, ¿es mejor extender y admitir mejor orm? Se pueden encontrar más detalles de DataMapper en http://datamapper.org/.

Creo que los rieles en versiones posteriores deberían permitirnos seleccionar qué equipo usar, como ahora permite una selección de base de datos. Incluso si solo tiene una opción, "ActiveRecord", las personas buscarán alternativas disponibles. Cuando comencé a aprender los rieles, pensé que solo hay soporte para ActiveRecord. Y luego ni siquiera intenté buscar otra cosa.

¿Por qué estoy escribiendo todo esto? Creo que debemos prestar más atención a este agradable ORM. Si eres desarrollador de alguna gema popular o no tan popular, piensa en agregar soporte de DataMapper. La comunidad de DataMapper debe escribir algunas guías de migración de ActiveRecord u otro ORM y mantener la documentación actualizada para que pueda ayudarlos. En cuanto a mí, la comunidad de DataMapper necesita más gente y tú puedes ser uno de ellos. La única desventaja de este ORM es la falta de documentación y usted puede ayudar.

¿Qué piensas de eso?

Respuesta

4

Rails 3 le permite utilizar Datamapper, pero no de manera predeterminada. Se le quieran utilizar DataMapper con rieles 3. Sólo hacer esto

 
    rails new project_name -m http://datamapper.org/templates/rails.rb 

Carriles le permite seleccionar, incluso se puede utilizar la opción --skip-activa-registro. :) (no puede ser sencillo, pero está allí.

Y sí, DataMapper es impresionante. :)

+0

Lo sabía y lo uso. Pero eso no es tan claro como debería ser (En rails lo ayuda, no puede encontrarlo, solo "skip-active-record") – AlexParamonov

1

La falta de documentación es un gran problema. Empecé a utilizar mis datos usando DataMapper y desde entonces he decidido implementar una interfaz web para mis datos. Incorporar DM en Rails, como principiante en cada uno, ha sido un tremendo desafío. Por lo tanto, tengo curiosidad, ¿conoces algún recurso que muestre el uso de DM/Rails? Me encantaría poder ver algo cuando no estoy seguro de cómo proceder.

+0

Yo mismo he recorrido este camino y he abandonado totalmente a DM mientras tanto. Casi no hay tráfico en la lista de correo de DM y las respuestas vienen muy lentamente. AR parece no ser tan sencillo como quizás DM, pero creo que no hay forma de evitar AR si realmente quieres entrar en producción con tu aplicación. El ecosistema alrededor de AR, como la gran cantidad de gemas que dependen solo de él, es una razón para seguir con AR. – lumpidu

Cuestiones relacionadas