Нужно ли создавать класс данных, не связанный с базой данных, как «модель» Rails 3 или просто базовый класс в области / lib? - PullRequest
2 голосов
/ 24 февраля 2012

должен ли класс данных не из базы данных, который мне нужен, быть создан как "модель" Rails 3, или просто как базовый класс в области / lib?

Я хочу построить несколько классов для представления вычисляемых объектов домена,Таким образом, поля не будут ссылаться на таблицу / столбец базы данных.В классе также будут методы с данными.

Вопрос - При генерации этих классов это должны быть обычные классы Ruby, которые я помещаю в область / lib?Или я должен / могу ли я использовать для этого модели рельсов (и генерировать их с помощью "rails g model ...")?

Ответы [ 3 ]

2 голосов
/ 24 февраля 2012

Модели без таблиц, вероятно, следует хранить в приложении / моделях.У меня есть несколько, которые получают доступ к API. ActiveModel в Rails может помочь добавить некоторые полезные функции Active Record.

1 голос
/ 24 февраля 2012

Классы, которые не отображаются в таблицы базы данных, могут по-прежнему находиться в приложении / модели.Вместо того чтобы расширять свой класс из ActiveRecord :: Base, вы можете просто объявить свой класс без каких-либо расширений (или ваших собственных расширений).

Хорошим примером этого является модель способностей CanCan.Он находится в app / models /, но не расширяет ActiveRecord :: Base.Дополнительную информацию о модели способностей CanCan можно найти здесь: https://github.com/ryanb/cancan/wiki/Defining-Abilities

Также учтите, что код в lib / не будет перезагружаться в среде разработки по умолчанию.

1 голос
/ 24 февраля 2012

Интересный вопрос .. У меня был тот же вопрос несколько недель назад.

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

В другом случае, когда я использую определенные наборы API для веб-приложений и мобильных приложений, я собираюсь сделать из кода, который взаимодействует с API, самоцвет Здесь следует отметить, что набор API также является частью моей системы и будет использоваться только моими приложениями.

...