Плагин "Нравится", "Не нравится" для рельсов - PullRequest
16 голосов
/ 13 сентября 2010

Есть ли плагин "like", "dislike" для рельсов ...

Я прошел через плагины рейтинга ... но все они были плагинами рейтинга 5 * ...

Ответы [ 5 ]

13 голосов
/ 14 сентября 2010

Я рекомендую создать опции like и dislike, взяв за основу функциональность классической модели голосования.

Таким образом, у вас есть Vote в качестве таблицы соединения между User и Votable Item.

Значение «Голосование» может работать как «Голосование». + 1 = «Нравится», «Голосование». -1 - «Не нравится», «Голосование.

Ваш контроллер для вашего голосового элемента может выглядеть так:

def like
  get_vote
  @vote.value += 1 unless @vote.value == 1
  @vote.save
  respond_to do |format|
    format.html
    format.js 
  end
end

def dislike
  get_vote
  @vote.value -= 1 unless @vote.value == -1
  @vote.save
  respond_to do |format|
    format.html
    format.js 
  end
end

private

def get_vote
  current_item = @item.detect{|r| r.id == params[:id].to_i}
  @vote = current_item.votes.find_by_user_id(current_user.id)
  unless @vote
    @vote = Vote.create(:user_id => current_user.id, :value => 0)
    current_item.votes << @vote
  end
end

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

5 голосов
/ 31 октября 2011

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

Acts As Votable - это Ruby Gem, специально написанный для моделей Rails / ActiveRecord. Основные цели этого драгоценного камня:

  • Разрешить голосовать за любую модель: нравится / не нравится, повышать / понижать и т. Д.
  • Разрешить голосовать любой модели. Другими словами, голоса не должны приходить от пользователя, они могут исходить от любой модели (например, группы или команды).
  • Обеспечивает легкий для записи / чтения синтаксис.
3 голосов
/ 01 мая 2012

Попробуйте Рекомендуется:

https://github.com/davidcelis/recommendable

1 голос
/ 13 сентября 2010

Я не вижу ничего плохого в этом вопросе.

Голосование вверх-вниз по-прежнему остается рейтингом. Просто используя только две звезды. :) Кажется, я помню, что Act_as_rateable позволяет номер определения звезды.

0 голосов
/ 13 сентября 2010

Почему бы просто не создать новое логическое поле с именем like? и затем обновите его как false для неприязнь и true для как . Я сомневаюсь, что вы найдете плагин / гем для этой функции.

...