Comment utiliser Acts_As_Votable Gem ?

Acts_As_Votable est une gemme rubis spécialement écrite pour les modèles Rails/ActiveRecord et cette gemme permet à n'importe quel modèle d'être voté pour un vote positif/négatif, comme/n'aime pas, etc. Il permet à n'importe quel modèle d'être voté dans des portées arbitraires en utilisant cette gemme, nous pouvons voter pour n'importe quel modèle. les votes ne doivent pas nécessairement provenir d'un utilisateur, ils peuvent provenir de n'importe quel modèle (comme un groupe ou une équipe) et fournissent une syntaxe facile à écrire/lire. Installation de gemmes
gem ‘acts_as_votable’
Ajoutez la ligne ci-dessus dans Gemfile et exécutez l'installation du bundle Versions Ruby et Rails prises en charge
Ruby 1.8.7, 1.9.2, 1.9.3, 2.0.0, 2.1.0 Rails 3.0, 3.1, 3.2, 4.0, 4.1+
Ce Gem utilise la table de vote pour enregistrer toutes les informations de vote. Pour générer une migration de vote, exécutez les commandes ci-dessous
les rails génèrent actes_as_votable: migration rake db: migrer
To rate any model just use “acts_as_votable” in model Exemple:
class Article < ActiveRecord::Base acts_as_votable end @article = Article.new(:name => ‘my new article’) @article.save @article.liked_by @user @article.votes_for.size # => 1
Vous trouverez ci-dessous quelques exemples de votes. Tous ces appels sont valides et acceptables.
@article.liked_by @user1 @article.downvote_from @user2 @article.vote_by :voter => @user3 @article.vote_by :voter => @user4, :vote => ‘like’ @article.vote_by :voter => @user5, :vote => ‘Dislike’
By default all votes are positive, so @user3 has cast a ‘good’ vote for @article. @user1, @user3, and @user4 all voted in favor of @article. @user2 and @user5 on the other had has voted against @article. Any word works for casting a vote in favor or against post like Positive/Negative, Up/Down, Like/Dislike.. etc, Boolean flags true and false are also applicable. Exemples avec des étendues : En utilisant ce joyau, nous pouvons ajouter une portée à notre vote
# positive/like votes @article.liked_by @user1, :vote_scope => ‘rank’ @article.vote_by :voter => @user3, :vote_scope => ‘rank’ @article.vote_by :voter => @user5, :vote => ‘like’, :vote_scope => ‘rank’ # negative/Dislike votes @article.downvote_from @user2, :vote_scope => ‘rank’ @article.vote_by :voter => @user2, :vote => ‘Dislike’, :vote_scope => ‘rank’ # tally them up! @article.find_votes_for(:vote_scope => ‘rank’).size # => 5 @article.get_likes(:vote_scope => ‘rank’).size # => 3 @article.get_upvotes(:vote_scope => ‘rank’).size # => 3 @article.get_dislikes(:vote_scope => ‘rank’).size # => 2 @article.get_downvotes(:vote_scope => ‘rank’).size # => 2 # votable model can be voted under different scopes by the same user @article.vote_by :voter => @user1, :vote_scope => ‘week’ @article.vote_by :voter => @user1, :vote_scope => ‘month’ @article.votes_for.size # => 2 @article.find_votes_for(:vote_scope => ‘week’).size # => 1 @article.find_votes_for(:vote_scope => ‘month’).size # => 1
En ajoutant du poids à nos votes, nous pouvons ajouter du poids à notre vote. La valeur par défaut est 1.
# positive/like votes @article.liked_by @user1, :vote_weight => 1 @article.vote_by :voter => @user3, :vote_weight => 2 @article.vote_by :voter => @user5, :vote => ‘like’, :vote_scope => ‘rank’, :vote_weight => 3 # negative/Dislike votes @article.downvote_from @user2, :vote_scope => ‘rank’, :vote_weight => 1 @article.vote_by :voter => @user2, :vote => ‘Dislike’, :vote_scope => ‘rank’, :vote_weight => 3 # tally them up! @article.find_votes_for(:vote_scope => ‘rank’).sum(:vote_weight) # => 6 @article.get_likes(:vote_scope => ‘rank’).sum(:vote_weight) # => 6 @article.get_upvotes(:vote_scope => ‘rank’).sum(:vote_weight) # => 6 @article.get_dislikes(:vote_scope => ‘rank’).sum(:vote_weight) # => 4 @article.get_downvotes(:vote_scope => ‘rank’).sum(:vote_weight) # => 4
L'électeur, nous pouvons demander à nos électeurs d'agir_as_voter pour fournir une fonctionnalité de réserve. Par exemple
classe Utilisateur < ActiveRecord::Base actes_as_voter end @user.likes @article @article.votes.size # => 1 @article.likes.size # => 1 @article.dislikes.size # => 0
Pour vérifier si un électeur a voté sur un modèle, on peut utiliser voté_for?. nous pouvons vérifier comment l'électeur a voté en utilisant voted_as_when_voted_for, nous pouvons également vérifier si l'électeur a voté pour ou contre. Alias pour les méthodes votées_up_on ? est voté_up_for ? , aimé? et voté_down_on ? est voté_down_for ?, n'aime pas ? nous pouvons également obtenir une liste de tous les objets pour lesquels un utilisateur a voté. Cela renvoie les objets réels au lieu des instances du modèle Vote. Tous les objets sont chargés avec impatience Votes enregistrés : Les électeurs ne peuvent voter qu'une seule fois par modèle. Dans cet exemple, le 2ème vote ne compte pas car @user a déjà voté pour @post.
@user.likes @post @user.likes @post @post.votes # => 1 @post.likes # => 1
Pour vérifier si un vote a été compté ou enregistré, utilisez vote_registered ? sur notre modèle après vote. Par exemple:
@product.liked_by @user @product.vote_registered ? # => vrai @product.liked_by => @user @product.vote_registered ? # => faux, car @user a déjà voté de cette façon @product.disliked_by @user @product.vote_registered ? # => vrai, car l'utilisateur a modifié son vote
To check if a vote registered or counted, use vote_registered? on our model after voting. To permit duplicates entries of a same voter, use option duplicate. Also notice that this will limit some other methods that didn’t deal with multiples votes, in this case, the last vote will be considered.
@post.vote_by voteur : @user, :duplicate => true
Mise en cache : To speed up perform we can add cache columns to our votable model’s table. These columns will automatically be updated after each vote. Contactez-nous ou commentez ci-dessous pour en savoir plus sur nous.

Abonnez-vous pour les dernières mises à jour

Articles Similaires

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

French
English
English
Japanese
German
French
Spanish

WhatsApp nous

Quitter la version mobile