Подтвердить что ты не робот

Плагин "Like", "Dislike" для рельсов

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

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

4b9b3361

Ответ 1

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

Итак, у вас есть Vote как таблица соединений между User и Votable Item.

Значение Vote может работать как Vote.value + 1 = Like, Vote.value -1 = Dislike, Vote.value = Нейтральный/Не голосовал.

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

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

И для каждой информации этот вопрос не заслуживает того, чтобы его проголосовали. Его вполне допустимо.

Ответ 2

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

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

  • Разрешить голосование любой модели, например/неприязнь, upvote/downvote и т.д.
  • Разрешить любую модель голосовать. Другими словами, голоса не должны поступать от пользователя, они могут поступать из любой модели (например, группы или группы).
  • Предоставьте простой синтаксис записи/чтения.

Ответ 4

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

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

Ответ 5

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