Я сам пошел по этому пути и тем временем полностью отказался от DM. В списке рассылки DM почти нет трафика, и ответы приходят очень медленно. AR кажется не таким простым, как, возможно, DM, но я думаю, что нет абсолютно никакого пути к AR, если вы действительно хотите начать работу с вашим приложением. Экосистема вокруг AR, как и огромное количество драгоценных камней, зависящих только от нее, является причиной, чтобы придерживаться AR.

DataMapper заключается вопределенно лучше чем ActiveRecord. Он имеет один API для множества хранилищ данных, включая хранилища RDBMS и NoSQL. DataMapper намного умнее, чем ActiveRecord. У этого есть "Стратегическая Стремительная Загрузка". Эта функция в одиночку стирает «проблему запроса N + 1». Кроме того, он позволяет ленивую загрузку тяжелых полей, таких как свойство Text. DataMapper позволяет создавать и искать любые сложные графы объектов, просто предоставляя вложенный хэш условий. ActiveRecods не подходит для ассоциаций в производстве. метод include уродлив и не поддается настройке. В октябре 2010 года Джош Симондс делаетпатч для этого метода разрешить исключение полей из загруженных страниц. Но этот путь был проигнорирован, и сегодня в rails3 у нас есть такой же уродливый метод включения.

Даже в Rails3 с великолепным AREL ActiveRecord далеко не лучшая форма для рельсов. Вы можете сказать: «Вау, этот новый gem metawhere позволяет писать хороший код, такой какArticle.where(:title.matches => 'Hello%', :created_at.gt => 3.days.ago)". Но подождите ... DataMapper поддерживает это" из коробки "! Может быть, вместо того, чтобы изменять ActiveRecord, чтобы выглядеть так, как будто DataMapper лучше расширять и поддерживать лучше orm? Более подробную информацию о DataMapper можно найти наhttp://datamapper.org/.

Я думаю, что рельсы в более поздних выпусках должны позволять нам выбирать, какую форму использовать, как сейчас, она позволяет выбирать базу данных. Даже у него будет только одна опция «ActiveRecord», люди будут искать доступные альтернативы. Когда я начинал изучать рельсы, я думал, что есть поддержка только для ActiveRecord. А потом я даже не пытался искать что-то другое.

Почему я пишу все это? Я думаю, что мы должны уделять больше внимания этому хорошему ORM. Если вы разработчик какого-то популярного или не очень популярного гема, подумайте о добавлении поддержки DataMapper. Сообщество DataMapper должно написать некоторые руководства по миграции из ActiveRecord или другого ORM и поддерживать актуальность документации, и вы можете им помочь. Что касается меня, сообществу DataMapper нужно больше людей, и вы можете стать одним из них. Единственный недостаток этого ORM - отсутствие документации, и вы можете помочь.

Так что ты думаешь об этом?

Ответы на вопрос(2)

Ваш ответ на вопрос