En ce moment, je suis en train de construire une application de médias sociaux sur Ruby on Rails, j'ai mis en place un système de vote en 5 points. Où vous pouvez voter les nouvelles affichées sur le site de 1-5, ce que je voudrais savoir, Quelle est la meilleure approche pour gérer les mises à jour sur le système de vote.Mise à jour du vote sur Ruby on Rails
Dans l'exemple. Si un utilisateur a déjà voté dans un article je voudrais ramener le score qu'il a donné dans l'article et verrouiller le vote (puisque je n'autorise que 1 vote par utilisateur et je permets de changer de vote à tout moment), mais si il n'a pas je vais élever l'article avec le le vote sur 0.
Je sais un moyen d'accomplir cela, je pourrais le faire dans la vue, et vérifier si l'utilisateur actuel a déjà voté sur cet article Je les enverrais à la vue EDIT sinon à la vue SHOW. (Je pense)
De toute façon, quelle serait l'approche "correcte" pour le faire?
EDIT: J'ai oublié de dire que la zone de liste déroulante de vote c'est partiel que je suis en train de rendre. Suis-je suppose de mettre à jour le partiel en quelque sorte?
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
Quoi que vous fassiez dans la vue, ne négligez pas les chèques dans le contrôleur (par exemple, si l'utilisateur est en droit de vote , ignore s'il a déjà voté). Il est facile pour l'utilisateur d'obtenir ou de publier ce qu'il veut, peu importe les idées que le HTML a à son sujet. –
Oui ... J'ai actuellement les "vérifications" sur le contrôleur (et la base de données) appliquées en ce moment, je cherche juste la manière "efficace" de le faire réellement dans la vue je suppose. – Gotjosh