2012-03-26 55 views
1

我們希望在我們的Rails應用中實現一個系統,允許用戶對帖子評價爲True或False。用戶點擊True時,會爲該帖子的True計數添加一個投票。我們希望設置該系統,以便如果用戶已經點擊True,但想要切換到False,他們可以單擊False,然後該投票立即轉移到客戶端的False列計數。真假錯誤評級系統

我們應該如何去實施這樣的事情?

我們目前這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 

這裏是我們目前rating.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

我認爲你有正確的想法。不知道爲什麼你有兩個belongs_to用戶模型雖然(我知道有兩個外鍵,我只是不明白它的原因)。我認爲這實際上是創建一個新的評級對象,如果用戶沒有該評論對象,則根據他們點擊的設置正確的值。如果他們確實有現有的評級,只需交換評級值即可。

def switch_value 
    self.rating = !self.rating 
end 

如果這不是你要找什麼,你能不能描述您有麻煩問題的某一方面?

+0

我認爲正試圖獲得更多AJAX風格的實現。只要點擊False就會將用戶的評分設置爲false,但點擊True時只需將其切換爲True即可。我們幾乎很難解釋,因爲問題看起來很簡單,但實際上非常複雜。 – 2012-03-26 04:21:39