vassilevsky/board — pull request #41 by girinad (2013-02-04 08:12:26+00:00)
Title: Feature 9 alternate option

В модель Item добавлен метод find_by_tags
на вход подается строка с названиями тегов, перечисленных через ,
строка разбивается и сортируется по алфавиту, после этого вычисляется md5 хеш тегов

В модель Item добавлена ассоциация
has_many :tags_hashes, dependent: :destroy
при добавлении нового объявления для нее вычисляются все возможные варианты тегов и сохраняются в БД. Фильтрация по тегам осуществляется путем поиска по хешам.

Пока еще не сделано:
1. При апдейте тегов на странице редактирования объявления - не производится перерасчет хешей и удаление старых записей
2. Не реализован UI для фильтрации объявлений по тегам

Можно улучшить следующее:
1. Изменить ассоциацию на has_and_belongs_to_many :tags_hashes, uniq: true и хранить уникальные хеши привязанные ко многим объявлениям (реализовать GC для хешей)
2. при добавлении/редактировании объявления для метода перебора возможных вариантов тегов и вычисления хешей создавать отдельный процесс, т.к. генерация занимает довольно большое время