Wie verwende ich Acts_As_Votable Gem?

Acts_As_Votable ist ein Ruby-Gem, das speziell für Rails/ActiveRecord-Modelle geschrieben wurde. Mit diesem Gem kann für jedes Modell über „Gefällt mir“/„Gefällt mir“ usw. abgestimmt werden. Es ermöglicht die Abstimmung über jedes Modell in beliebigen Bereichen. Mit diesem Gem können wir jedes Modell abstimmen. Stimmen müssen nicht von einem Benutzer stammen, sie können von jedem Modell (z. B. einer Gruppe oder einem Team) stammen und bieten eine einfach zu schreibende/lesbare Syntax. Edelsteininstallation
gem 'acts_as_votable'
Fügen Sie die obige Zeile in Gemfile hinzu und führen Sie bundle install aus. Unterstützte Ruby- und Rails-Versionen
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+
Dieses Gem verwendet eine Abstimmungstabelle, um alle Abstimmungsinformationen zu speichern. Um eine Stimmenmigration zu generieren, führen Sie die folgenden Befehle aus
Schienen generieren act_as_votable:migration rake db:migrate
Um ein Modell zu bewerten, verwenden Sie einfach „acts_as_votable“ im Modell Beispiel:
class Article < ActiveRecord::Base wirkt_as_votable end @article = Article.new(:name => 'mein neuer Artikel') @article.save @article.liked_by @user @article.votes_for.size # => 1
Nachfolgend finden Sie einige Abstimmungsbeispiele. Alle diese Aufrufe sind gültig und akzeptabel
@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 => 'Gefällt mir nicht'
Standardmäßig sind alle Stimmen positiv, daher hat @user3 eine „gute“ Stimme für @article abgegeben. @user1, @user3 und @user4 haben alle für @article gestimmt. @user2 und @user5 hingegen haben gegen @article gestimmt. Mit jedem Wort kann für oder gegen einen Beitrag gestimmt werden, z. B. „Positiv/Negativ“, „Up/Down“, „Gefällt mir“/„Gefällt mir nicht“ usw. Die booleschen Flags „true“ und „false“ sind ebenfalls anwendbar. Beispiele mit Bereichen: Mit diesem Juwel können wir unserer Abstimmung einen Spielraum hinzufügen
# positive/Gefällt mir-Stimmen @article.liked_by @user1, :vote_scope => 'rank' @article.vote_by :voter => @user3, :vote_scope => 'rank' @article.vote_by :voter => @user5, :vote => 'Gefällt mir', :vote_scope => 'Rang' # negative/Gefällt mir nicht Stimmen @article.downvote_from @user2, :vote_scope => 'Rang' @article.vote_by :voter => @user2, :vote => 'Gefällt mir nicht' , :vote_scope => 'rank' # zählt sie! @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 # stimmbares Modell kann sein In verschiedenen Bereichen vom selben Benutzer abgestimmt @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
Durch das Hinzufügen von Gewichten zu unseren Stimmen können wir unserer Stimme Gewicht verleihen. Der Standardwert ist 1.
# positive/Gefällt mir-Stimmen @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-Stimmen @article.downvote_from @user2, :vote_scope => 'rank', :vote_weight => 1 @article.vote_by :voter => @user2 , :vote => 'Gefällt mir nicht', :vote_scope => 'rank', :vote_weight => 3 # zählt sie zusammen! @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
Mit dem Voter können wir unsere Wähler als_voter agieren lassen, um einige Reservefunktionen bereitzustellen. Zum Beispiel
Klasse Benutzer < ActiveRecord::Base wirkt_as_voter end @user.likes @article @article.votes.size # => 1 @article.likes.size # => 1 @article.dislikes.size # => 0
Um zu überprüfen, ob ein Wähler über ein Modell abgestimmt hat, können wir voted_for? verwenden. Mithilfe von voted_as_when_voted_for können wir überprüfen, wie der Wähler abgestimmt hat. Außerdem können wir prüfen, ob der Wähler positiv oder negativ gestimmt hat. Aliase für Methoden voted_up_on? ist voted_up_for? , gefallen? und voted_down_on? ist voted_down_for?, unbeliebt? Außerdem können wir eine Liste aller Objekte erhalten, für die ein Benutzer gestimmt hat. Dadurch werden die tatsächlichen Objekte anstelle von Instanzen des Vote-Modells zurückgegeben. Alle Objekte werden eifrig geladen Registrierte Stimmen: Wähler können nur einmal pro Modell abstimmen. In diesem Beispiel zählt die 2. Stimme nicht, da @user bereits für @post gestimmt hat.
@user.likes @post @user.likes @post @post.votes # => 1 @post.likes # => 1
Um zu überprüfen, ob eine Stimme gezählt oder registriert wurde, verwenden Sie vote_registered? zu unserem Modell nach der Abstimmung. Zum Beispiel:
@product.liked_by @user @product.vote_registered? # => true @product.liked_by => @user @product.vote_registered? # => falsch, weil @user bereits so abgestimmt hat @product.disliked_by @user @product.vote_registered? # => wahr, weil der Benutzer seine Stimme geändert hat
Um zu überprüfen, ob eine Stimme registriert oder gezählt wurde, verwenden Sie vote_registered? zu unserem Modell nach der Abstimmung. Um doppelte Einträge desselben Wählers zuzulassen, verwenden Sie die Option Duplikat. Beachten Sie auch, dass dadurch einige andere Methoden eingeschränkt werden, die sich nicht mit Mehrfachstimmen befassen. In diesem Fall wird die letzte Stimme berücksichtigt.
@post.vote_by Wähler: @user, :duplicate => true
Caching: Um die Leistung zu beschleunigen, können wir der Tabelle unseres abstimmbaren Modells Cache-Spalten hinzufügen. Diese Spalten werden nach jeder Abstimmung automatisch aktualisiert. Kontaktiere uns oder kommentieren Sie unten, um mehr über uns zu erfahren.

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman