Я создаю функцию голосования для нашего веб-сайта в стиле YouTube «Любит» и «Не любит» и Digg с помощью Ruby on Rails 3. У меня возникли проблемы с правильной схема.Like/Dislike style База данных голосования в Rails
У меня есть три модели, пользователи, темы и голоса. Каждый пользователь сделает один голос «Like» или «Dislike» для одной темы. Как и эти сайты, пользователи могут голосовать на тему, но также могут создавать новые темы. Я хотел бы иметь возможность не только просматривать все Голоса Пользователя, но также и Темы, которые они создали, и Темы, на которые они проголосовали. Я пытаюсь построить это самостоятельно и решить, как лучше всего настроить базу данных для обработки этого процесса.
Моя первая идея состояла в том, чтобы использовать: has_many и belongs_to исключительно как так ...
класс User < ActiveRecord :: Base
has_many: голоса
has_many: темы
класс Тема < ActiveRecord :: Base
has_many: голосов
BELONGS_TO: пользователи
класса Голосуйте < ActiveRecord :: Base
BELONGS_TO: темы
BELONGS_TO: пользователи
булева #tracks выбора выбирает ли пользователь нравится или не нравится
Но стало очевидно, что это не лучший способ сделать это. Я начал думать, что лучший метод должен был бы использовать: has_many: через ассоциации, как ...
< класс User ActiveRecord :: Base
has_many: голосов: через =>: темы
Но я не уверен. Любые идеи о том, как лучше всего установить что-то подобное?