Использование Ruby on Rails без ActiveRecord - PullRequest
15 голосов
/ 18 декабря 2010

Я рассматривал возможность перехода с использования PHP на Ruby on Rails для своих веб-проектов, и меня больше всего беспокоит использование ActiveRecord для Rails. Мне кажется, что использование ActiveRecord очень поощряется, и написание простого SQL кажется неодобрительным. Посмотрев несколько проектов, я еще не увидел тот, который на самом деле использует SQL.

Я еще не продал ActiveRecord, в основном потому, что он требует изучения чего-то, что не кажется таким мощным, как прямой SQL, например Есть ли простой способ сделать вложенный запрос с группой с помощью предложения с ActiveRecord, или мне придется прыгать через обручи, чтобы сделать это?

Кто-нибудь когда-либо использовал Rails без ActiveRecord? Если да, то какой у вас был опыт?

Ответы [ 4 ]

45 голосов
/ 18 декабря 2010

Три слова: Здесь будут драконы .

Сойдя с пути ведения дел "Путь Рельсов", вы столкнетесь с врагами невероятной силы и хитрости. Сначала вы будете думать: «О, ХО, ХО, ХО, Я делаю это мой путь, разве я не удивительный?». Тогда ты устанешь. Исчерпаны даже. К сожалению, во время вашей борьбы вы посмотрите на все крутые драгоценные камни , которые используют Active Record, и удивитесь, почему вы решили пойти по пути, настолько полному гибели и мрака, что Чак Норрис срать его брюки.

Пожалуйста, не уходите от Active Record. Он здесь только для того, чтобы помочь вам, а не мешать вам. Если вы хотите написать свои собственные запросы, тогда существует метод find_by_sql или еще более низкий метод Model.connection.execute. Однако их следует использовать, как и ядерное оружие, только во времена крайне тяжелых потребностей.

Если вы вообще не хотите использовать Active Record, я бы посоветовал вам взглянуть на DataMapper или Mongoid .

DataMapper предоставляет почти те же функции, что и Active Record, и некоторые, как известно, предпочитают синтаксис. Как мелочи: это был один из первых гемов, совместимых с Rails 3.

Mongoid, с другой стороны, предназначен для баз данных MongoDB, что также нравится некоторым другим людям.

Прошу еще раз: не сбивайся с проторенного пути, чтобы не избить себя.

8 голосов
/ 18 декабря 2010

Если вы не хотите использовать ActiveRecord, вам не нужно и вы можете определить чистый sql в своих моделях, если хотите. find_by_sql («выберите все»)

4 голосов
/ 18 декабря 2010

Вы можете использовать DataMapper.После написания приложений и инструментов для Rails более года я бы - настоятельно - рекомендовал использовать ActiveRecord.Даже если вы когда-либо используете Model.find_by_sql («подверженный ошибкам рукописный sql с использованием полей, которые могут изменяться со временем») вместо Model.find_by_last_name («Smith»)

Многие умные люди потратили много часов наActiveRecord и ARL.Прошу вас использовать их работу.

3 голосов
/ 18 декабря 2010

У других людей должна быть веская причина использовать ORM в своих приложениях на Rails.:)

Особенно в Rails 3 ORM являются подключаемыми - вы можете легко использовать DataMapper или Sequel вместо ActiveRecord.

В любом случае модели являются важной (и очень мощной) частью любогоMVC Framework.В бизнес-модели заложено много бизнес-логики - «толстые модели» являются своего рода рекомендуемым способом разработки.

Еще один хороший момент в существующих ORM состоит в том, что они фактически позволяют (но не поощряют) вас писать SQL от руки - вы можете свободно писать все свои запросы вручную, если хотите.Но даже тогда я бы порекомендовал вам оставить параметризованные ваши запросы и позволить библиотеке интерполировать ваши параметры (вы делаете это и в PHP, не так ли)?

...