Модель с горсткой идентификаторов - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть модель, в которой много других моделей, но в этой модели нужно всего 10 или менее идентификаторов.

Скажем, у нее есть: ванная комната, кухня, LivingRoom для аргументов и новые записивероятно, никогда не нужно будет менять.

Каков наилучший способ создания такой модели, которая не использует таблицу базы данных?

Ответы [ 2 ]

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

Возможно, это не лучшая практика, но для решения той же проблемы я просто указал коллекцию в моей модели, например:

ROOM_TYPES = [ "Bathroom", "Living Room", "Kitchen" ]

Тогда в поле зрения:

<%= f.select(:room_type, Project::ROOM_TYPES, {:prompt => '...'}) %>

(замените Project фактическим названием вашей модели.)

Супер-просто, почти без настроек. Однако я понимаю, как трудно поддерживать его, поскольку нет способа добавлять элементы без доступа к коду Rails, но он быстро выполняет свою работу.

0 голосов
/ 26 февраля 2012

Несмотря на то, что коллекция строк никогда не изменяется, все равно полезно иметь эту таблицу в вашей базе данных, чтобы использовать отношения ActiveRecord. Менее надуманным примером будет таблица базы данных со списком штатов США. Это вряд ли изменится, и, скорее всего, будет иметь только пару столбцов (название штата и сокращение штата). Однако, сохраняя их в базе данных и поддерживая их с помощью ActiveRecord, вы сохраняете возможность выполнять такие удобные вещи, как поиск всех пользователей в состоянии с использованием обычной семантики rails.

При этом альтернативой может быть просто создать класс, который вы вставляете в каталог моделей, который не наследуется от ActiveRecord, а затем либо заполнить его один раз из базы данных при загрузке приложения, либо просто заполнить его вручную ,

Подобный вопрос был задан вчера, и в одном из ответов предлагается механизм поддержки чего-то похожего на то, что вы хотите сделать:

Как создать статический класс, который представляет то, что находится в базе данных?

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