Приложение Rails, и нужно добавить теги к модели - PullRequest
1 голос
/ 03 декабря 2008

У меня есть приложение викторины, связанное с IRC-ботом, который задает вопросы (да, на IRC), где у меня есть эта Question модель, которая содержит, ну, в общем, вопросы, ответы, подсказки и еще несколько вещей.

Я начал с модели Quiz (например, специальной викторины на Хэллоуин или Рождество) с quiz_id в таблице questions, затем я сказал себе, что было бы неплохо иметь возможность классифицировать вопросы, поэтому я добавил Category модель (например, фильмы или книги), с category_id в questions.

Теперь мои пользователи хотели бы иметь возможность добавить вопрос в одну или несколько викторин и назначить одну или несколько категорий для вопросов ...

Итак, я думал об удалении моделей Quiz и Category и замене их тегами, так что будет тег Хэллоуин, тег фильма и может возникнуть вопрос "Рождество фильма Хэллоуин "для тегов.

В своих поисках я видел довольно много способов включить теги, такие как acts_as_taggable, acts_as_taggable_on_steroids или все, что кто-то себе представлял: -)

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

Ответы [ 2 ]

2 голосов
/ 03 декабря 2008

acts_as_taggable_on_steroids более старый, но он все еще работает и все еще поддерживается. Убедитесь, что вы посещаете основной репозиторий для него:

http://svn.viney.net.nz/things/rails/plugins/acts_as_taggable_on_steroids/

Вы можете использовать acts_as_taggable_on_steroids с named_scopes, вот статья, которая показывает, как:

Ускорение и именная область действия activ_as_taggable_on_steroids Находит

Фактическое дополнение к вашей модели довольно тривиально (это прямо из статьи выше):

named_scope :tagged_with, lambda { |tags| YourModel.find_options_for_find_tagged_with(tags) }
2 голосов
/ 03 декабря 2008

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

Однако у меня есть сомнения относительно модели Викторины. Если вы используете только модель Викторины, чтобы сгруппировать вопросы, можно заменить ее тегами. Но я думаю, что модель Quiz будет включать в себя больше функциональности, чем просто группировка в одиночку. Например, ведение счета, выбор следующего вопроса и т. Д. Поэтому я бы оставил модель Quic без изменений.

Чтобы реализовать тегирование, acts_as_taggable_on_steroids работает, но немного устарело. Было бы неплохо иметь плагин тегов, который использует named_scope в фоновом режиме, так как это сделало бы плагин гораздо более гибким.

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