Как получить результаты acts_as_votable для конкретной модели?

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

class FavoritesController < ApplicationController
 def guides

 end

 def courses
  user = current_user
  @courses = user.find_up_voted_items
 end
end

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

1 ответ

Решение

Из документов act_as_votable:

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

@user.get_voted Comment

@user.get_up_voted Comment

@user.get_down_voted Comment

https://github.com/ryanto/acts_as_votable

Так что в вашем случае я бы использовал:

class FavoritesController < ApplicationController
  before_action :get_user, only: %i[guides courses]

  def guides
    @guides = @user.get_up_voted Guide
  end

  def courses
    @courses = @user.get_up_voted Course
  end

  private

  def get_user
    @user = current_user
  end
end
Другие вопросы по тегам