Истинная или Ложная рейтинговая система - PullRequest
1 голос
/ 26 марта 2012

Мы хотим внедрить систему в нашем приложении Rails, которая позволяет пользователям оценивать сообщения как True или False.После нажатия пользователем кнопки True, это добавит один голос к счету True за этот пост.Мы хотим настроить эту систему таким образом, чтобы, если пользователь уже нажал кнопку «Истина», но хочет переключиться на «Ложь», он мог нажать «Ложь», и этот голос будет перенесен в число столбцов «Ложь» сразу на стороне клиента.

Как нам реализовать что-то подобное?

у нас сейчас это есть в micropost.rb

belongs_to :user
  belongs_to :target_user, :class_name=>"User", :foreign_key=>"belongs_to_id" 
  has_many :ratings

def rateable_by_user?(user)
  self.ratings.where(:rater_id=>user.id).empty?
end

вот наш текущий рейтинг. Rb

class Rating < ActiveRecord::Base
    attr_accessible :micropost_id, :owner_id, :rater_id, :rating
    belongs_to :micropost
    belongs_to :target_user, :class_name=>"User", :foreign_key=>"owner_id"
    belongs_to :user, :class_name=>"User", :foreign_key=>"rater_id"
    scope :trues, where("rating = ?", "true")
    scope :falses, where("rating = ?", "false")
end

1 Ответ

1 голос
/ 26 марта 2012

Я думаю, у вас правильная идея. Не уверен, почему у вас есть две принадлежащие для модели пользователя (я понимаю, что есть два внешних ключа, я просто не понимаю причину этого). Я думаю, что на самом деле все сводится к созданию нового объекта рейтинга, если у пользователя его нет для этого поста, и к настройке правильного значения, на основании которого они нажимают. Если у них есть существующий рейтинг, просто поменяйте значение рейтинга.

 def switch_value
   self.rating = !self.rating
 end

Если это не то, что вы ищете, не могли бы вы описать конкретный аспект проблемы, с которой у вас проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...