Rails: Как структурировать пользовательскую модель/контроллер для сохранения в избранное?

Я создаю приложение Rails, в котором есть данные о Конгрессе США. У каждого депутата есть своя страница. Я хочу, чтобы пользователи моего приложения могли добавлять определенных законодателей в избранное. Я создал ресурс законодателя, а также ресурс пользователя в своем приложении. У меня также есть модель Favorites для has_many через ассоциацию.

Модель пользователя выглядит следующим образом:

class User < ActiveRecord::Base
  has_many :favorites
  has_many :legislators, through: :favorites
  has_many :bills, through: :legislators
end

Я еще не реализовал функцию "добавить депутата в избранное". Сейчас страница обновления/редактирования пользователя используется только для обновления информации о пользователе.

Мой вопрос заключается в том, как спроектировать/структурировать эту функцию. Должен ли я добавить в модель пользователя метод для добавления/удаления законодателей из избранного и изменить метод update в пользовательском контроллере для обработки добавления/удаления избранного? Или я должен вместо этого использовать контроллер Избранное?

У меня есть пара идей о том, как это сделать, но я не уверен, что будет самым чистым/RESTful способом.


person user3809888    schedule 01.03.2015    source источник


Ответы (1)


Используйте контроллер избранного. Когда пользователь добавляет депутата в избранное, он «создает» избранную запись. И когда они снимают избранное с законодателя, они «уничтожают» любимую пластинку.

Таким образом, вам, вероятно, вообще не понадобится update. Используйте favourites#create и favourites#destroy. Это спокойный способ.

Что касается размещения логики в вашей модели и контроллере, для чего-то такого простого я бы лично просто поместил ее в контроллер.

person joshua.paling    schedule 01.03.2015