Acts_as_rateable is a rails plugin providing a rating interface for ActiveRecord models. It is released under the MIT license. The original plugin is used on cotcot.hu for article rating, sponsored quizzes, etc.
-
Rating scores are recorded by user
-
Users can update previous ratings
-
Uses a polymorphic association to your model, so no changes to your existing models in the database are required
-
Stores computed score and number of ratings for efficient data access
-
Possibility to change range of the ratings (1..5 is default)
Install as a gem:
$ sudo gem install mreinsch-acts_as_rateable
Then add the gem dependency in your config:
# config/environment.rb config.gem "mreinsch-acts_as_rateable", :source => "http://gems.github.com", :lib => "acts_as_rateable"
To install as a plugin, use:
$ ./script/plugin install git://github.com/mreinsch/acts_as_rateable.git
Install the plugin into your vendor/plugins directory, insert ‘acts_as_rateable’ into your model, then restart your application.
class Post < ActiveRecord::Base acts_as_rateable end
Now your model is extended by the plugin, you can rate it (1-#) or calculate the average rating.
@post.rate_it(4, current_user) @post.average_rating #=> 4.0 @post.average_rating_round #=> 4 @post.average_rating_percent #=> 80 @post.rated_by?(current_user) #=> true @post.rating_by(current_user) #=> 4 @post.ratings_couunt #=> 1 Post.find_top_rated #=> top rated records
Optional you can specify the highest score using the :max_rating paramter as follows. The default for :max_rating is 5.
class Comment < ActiveRecord::Base acts_as_rateable :max_rating => 10 end
See acts_as_rateable.rb for further details!
-
Remove the old plugin, and install this version.
-
Check your code and make sure you pass the user object instead of the user ID for the rate_it, rated_by? and rating_by methods.
-
Generate an update migration using: ./script/generate acts_as_rateable_update1
-
Run your test cases
Copyright © 2007 Ferenc Fekete, xpnindustries.com , released under the MIT license
Copyright © 2009 mobalean LLC, www.mobalean.com