Использование Ruby on Rails без ActiveRecord

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

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

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

Ответы

Ответ 1

Если вы не хотите использовать ActiveRecord, вам не нужно и может определить чистый sql в ваших моделях, если вы этого пожелаете. find_by_sql ('select whatever')

Ответ 2

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

Уходя с пути выполнения вещей "Путь Rails", вы встретите врагов невообразимой силы и хитрости. Сначала вы подумаете "OH HO HO, я делаю это по-своему, разве я не потрясающе?". Тогда вы устанете. Измученный даже. Забавно, во время вашей борьбы вы посмотрите на все крутой камень, которые используют Active Record, и задаются вопросом, почему вы выбрали путь вниз по пути чреватый обреченностью и унынием, он заставил Чак Норриса выдернуть штаны.

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

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

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

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

Я прошу еще раз: не отходите от избитого пути, чтобы вы не хотели избивать себя.

Ответ 3

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

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

Ответ 4

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

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

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

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