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
To rate any model just use “acts_as_votable” in model Beispiel:
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
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 => ‘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. Beispiele mit Bereichen: Mit diesem Juwel können wir unserer Abstimmung einen Spielraum hinzufügen
# 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
Durch das Hinzufügen von Gewichten zu unseren Stimmen können wir unserer Stimme Gewicht verleihen. Der Standardwert ist 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
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
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 Wähler: @user, :duplicate => true
Caching: To speed up perform we can add cache columns to our votable model’s table. These columns will automatically be updated after each vote. 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

German
English
English
Japanese
German
French
Spanish

WhatsApp uns

Beenden Sie die mobile Version