Есть ли какой-либо плагин типа "like", "dislike" для рельсов...
Я прошел рейтинговые плагины... но все они были 5-звездочными рейтинговыми плагинами...
Есть ли какой-либо плагин типа "like", "dislike" для рельсов...
Я прошел рейтинговые плагины... но все они были 5-звездочными рейтинговыми плагинами...
Я рекомендую создать параметр 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
И для каждой информации этот вопрос не заслуживает того, чтобы его проголосовали. Его вполне допустимо.
Я знаю, что ответ уже принят, но я только что нашел драгоценный камень под названием act_as_votable, который может соответствовать вашим потребностям:
Acts As Votable - это Ruby Gem, специально написанный для моделей Rails/ActiveRecord. Основные цели этого драгоценного камня:
- Разрешить голосование любой модели, например/неприязнь, upvote/downvote и т.д.
- Разрешить любую модель голосовать. Другими словами, голоса не должны поступать от пользователя, они могут поступать из любой модели (например, группы или группы).
- Предоставьте простой синтаксис записи/чтения.
Попробуйте Рекомендовать:
Я не вижу ничего плохого в этом вопросе.
Предыдущее голосование по-прежнему оценивается. Просто используйте только две звезды.:) Кажется, я помню act_as_rateable, позволяющий определять количество звезд.
Почему бы просто не создать новое логическое поле с именем like
? а затем обновите его как false
для неприязни и true
для имени. Я сомневаюсь, что вы найдете плагин/драгоценный камень для этой функции.