значения таблицы поиска профилей пользователей в виде констант (денормализованных) или моделей (нормализованных) - PullRequest
3 голосов
/ 08 июля 2010

Мой сайт содержит профили пользователей с такими полями, как цвет волос и глаз.

Я реализовывал поля типа таблицы поиска с константами в моей пользовательской модели, т. Е.

HAIR = %w[shaved black blond brown red grey white bald]

EYES =  %w[black brown blue hazel green grey other]

используется в моих представлениях с инструкциями collection_select для заполнения раскрывающихся списков. Я сделал это с помощью констант, чтобы избежать ~ 10 дополнительных объединений каждый раз, когда просматривается профиль пользователя.

<%= f.collection_select :eyes, Profile::EYES, :to_s,  .....

Значения хранятся в модели как целые числа, т.е. profile.hair = Profile :: HAIR.index ("red")

Имею ли я какой-либо очевидный недостаток, не сохраняя эти данные в моделях (например, модель глаза, модель волос) - это окажет какое-либо существенное негативное влияние на скорость поиска, если я хочу выполнять поиск на основе глаз = синий, волосы = черный например?

Спасибо

Ответы [ 2 ]

1 голос
/ 09 июля 2010

Это отличный пример использования ActiveHash:

http://github.com/zilkey/active_hash

Давайте создадим хорошие модели перечисления в памяти для отслеживания этих вещей, которые позволят вам создавать значимыеассоциации в ваших моделях.

0 голосов
/ 08 июля 2010

Это не должно иметь слишком большого влияния на скорость поиска для разумного количества данных.Хотя вы должны убедиться, что вы определили индексы SQL для столбцов волос и глаз, чтобы в базе данных было проще выполнять поиск.

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