現在,我正在構建Ruby on Rails上的社交媒體應用程序,我實現了一個5分投票系統。您可以從1-5的網站投票發佈新聞,我想知道的是,處理投票系統更新的最佳方法是什麼?Ruby on Rails上的投票更新
例如。如果一個用戶已經在一篇文章中投了票,我想帶回他在文章中給出的分數並且軟鎖定投票(因爲我只允許每個用戶投一票,並且我允許在任何時候改變你的投票),但是如果他沒有我會提出與0投票的文章。
我知道一種方法來實現這一點,我可以在視圖中做到這一點,並檢查當前用戶是否已投票對本文我會將它們發送到編輯視圖,否則發送到SHOW視圖。 (我認爲)
無論如何,這是什麼「正確」的做法?
編輯:我忘了說投票組合框它是我渲染的部分。我想以某種方式更新部分?
EDIT2:
class Article < ActiveRecord::Base
has_many :votes
belongs_to :user
named_scope :voted_by, lambda {|user| {:joins => :votes, :conditions => ["votes.user_id = ?", user]} }
end
class User < ActiveRecord::Base
has_many :articles
has_many :votes, :dependent => :destroy
def can_vote_on?(article)
Article.voted_by(current_user).include?(article) #Article.voted_by(@user).include?(article)
end
end
無論你在視圖中做什麼,不要忽略檢查在控制器(例如,如果用戶是最多投票,如果他已經投了票,就不要理會)。無論用戶有什麼想法,用戶都可以很容易地獲取或發佈任何他想要的內容。 – 2010-09-03 22:37:03
是的......我實際上已經在控制器(和數據庫)上應用了「檢查」,我只是尋找在我看來實際做到的「有效」方式。 – Gotjosh 2010-09-03 22:49:16