Почему ActiveRecord не является модулем? - PullRequest
1 голос
/ 03 августа 2010

Чтобы получить все вкусности ActiveRecord, которые ваш класс должен наследовать от ActiveRecord::Base:

class Post < ActiveRecord::Base

Почему бы не попросить пользователя include ActiveRecord в качестве модуля вместо этого?

ПреимуществоЭтот подход заключается в том, что Rails может автоматически включать ActiveRecord во все классы в каталоге моделей, делая его полностью прозрачным для пользователя.Т.е.:

class Post # no `< ActiveRecord::Base`!

Это (относительно незначительный) недостаток дизайна в Rails?

1 Ответ

1 голос
/ 03 августа 2010

ActiveRecord не находится в спящем режиме. Модели ActiveRecord не являются чистыми моделями - они являются явными Active Records и следуют семантике шаблона Active Record.

Это не недостаток дизайна. Это совершенно другая цель дизайна.

Я бы конечно хотел увидеть Ruby Hibernate. Но ActiveRecord это не так.

Мартин Фаулер описывает Активную запись как:

Объект, который упаковывает строку в таблицу или представление базы данных, инкапсулирует доступ к базе данных и добавляет логику домена к этим данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...