現在、Ruby on Rails でソーシャル メディア アプリを作成している最中で、5 点投票システムを実装しました。サイトに投稿されたニュースを 1 から 5 まで投票できます。私が知りたいのは、投票システムの更新を処理する最善の方法は何ですか。
例では。ユーザーが既に記事に投票した場合、記事で彼が付けたスコアを戻し、投票をソフトロックしたいと思います (ユーザーごとに 1 票のみを許可し、いつでも投票を変更できるため)。彼はそうではありません。投票数が 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