Я создаю функцию голосования для нашего веб-сайта в стиле YouTube «Нравится» и «Не нравится» и Digg с использованием Ruby on Rails 3. У меня возникают проблемы при выборе правильной схемы.
У меня есть три модели: пользователи, темы и голоса.Каждый пользователь получит один голос «Нравится» или «Не нравится» за одну тему.Как и эти сайты, пользователи могут голосовать за тему, но они также могут создавать новые темы.Я хотел бы иметь возможность просматривать не только все голоса пользователей, но и созданные ими темы и темы, за которые они проголосовали.Я пытаюсь построить это самостоятельно и решить, как лучше всего настроить базу данных для обработки этого процесса.
Моя первая идея состояла в том, чтобы использовать: has_many и assign_to исключительно как…
класс User
has_many: голоса
has_many: темы
класс Тема
has_many: голоса
Proper_To: пользователи
класс Голосовать
принадлежат_:: темы
принадлежат_: пользователи
логический выбор # отслеживает, выбирает ли пользователь Likeили не нравится
Но стало очевидно, что это может быть не лучшим способом сделать это.Я начал думать, что лучшим способом было бы использовать: has_many: посредством ассоциации, как ...
класс User
has_many: голоса,: через =>: темы
Но я не уверен.Любые идеи о том, как лучше настроить что-то подобное?