「acts_as_ratedプラグイン」の編集履歴(バックアップ)一覧に戻る

acts_as_ratedプラグイン - (2008/08/20 (水) 21:53:39) のソース

**プラグイン名
acts_as_ratedプラグイン

**このプラグインができること
+レーティング出来る
+平均ポイント・ポイント総和・投票者数取得可能
+ユーザ削除によるポイント変動(不正ユーザによる操作のキャンセルが楽かも)
+ユーザIDからレーティング済みモデルを抽出可能
+平均ポイントによるレーティング対象モデル抽出可能

詳しいことは本家参照↓
> * Rate any model
> * Optionally add fields to the rated objects to optimize speed
> * Optionally add an external rating statistics table with a record for each rated model
> * Can work with the added fields, external table or just using direct SQL count/avg calls
> * Use any model as the rater (defaults to User)
> * Limit the range of the ratings
> * Average, total and number of ratings
> * Find objects by ratings or rating ranges
> * Find objects by rater
> * Check if an object is rated by a specific rater. (Added by Tiago Serafim, thanks!)
> * Extensively tested

**対象バージョン
1.2系 2.0系 2.1系

**ちょー簡単な使い方
>./script/plugin install svn://rubyforge.org/var/svn/acts-as-rated/trunk/acts_as_rated 
でインストールして、
>  class AddRatingTables < ActiveRecord::Migration
>    def self.up
>      ActiveRecord::Base.create_ratings_table
>      # Movies table has the columns for the ratings added while it's created
>      create_table(:movies) do |t|
>        t.column :title, :text
>        Movie.generate_ratings_columns t
>      end
>      # Cars table has the columns for the ratings added, but after the fact, using ALTER TABLE calls.
>      # Usually used if the model already exist and we want to add the ratings after the fact
>      create_table(:cars) do |t|
>        t.column :title, :text
>      end
>      Car.add_ratings_columns
>    end
>    def self.down
>      # Remove the columns we added
>      Car.remove_ratings_columns
>      drop_table :movies rescue nil
>      drop_table :cars rescue nil
>      ActiveRecord::Base.drop_ratings_table
>    end
>  end
みたいにマイグレーションしてからモデルに、
>  class Book < ActiveRecord::Base
>    acts_as_rated
>  end
としておくと、こんなことができる。
>  bill = User.find_by_name 'bill'
>  jill = User.find_by_name 'jill'
>  catch22 = Book.find_by_title 'Catch 22'
>  hobbit  = Book.find_by_title 'Hobbit'
>
>  catch22.rate 5, bill
>  hobbit.rate  3, bill
>  catch22.rate 1, jill
>  hobbit.rate  5, jill
>
>  hobbit.rating_average # => 4
>  hobbit.rated_total    # => 8
>  hobbit.rated_count    # => 2
>
>  hobbit.unrate bill
>  hobbit.rating_average # => 5
>  hobbit.rated_total    # => 5
>  hobbit.rated_count    # => 1
>
>  bks = Book.find_by_rating 5     # => [hobbit]
>  bks = Book.find_by_rating 1..5  # => [catch22, hobbit]
>
>  usr = Book.find_rated_by jill   # => [catch22, hobbit]
普通のマイグレーションファイル作ってから、レーティングしたいモデルだけAR.generate_ratings_columnsとかで追加マイグレーションするのが良いかも。

**公式ページ
-[[公式>>http://acts-as-rated.rubyforge.org/]]

**日本語解説ページ
-見つからない

**外国語解説ページ
-あるかもしれないけど、本家でよくね?

**のうはう
-acts_as_ratedのオプション
[[rdocを読む>http://acts-as-rated.rubyforge.org/classes/ActiveRecord/Acts/Rated/ClassMethods.html#M000001]]のが確実かも(英語)
-マイグレーション時(あらかじめyour_tablesとyour2_tablesはDB/Model共に必要な構造を作っておき、追加マイグレーションする)
>  class AddRatingTables < ActiveRecord::Migration
>    def self.up
>      ActiveRecord::Base.create_ratings_table
>      YourTable.add_ratings_columns
>      Your2Table.add_ratings_columns
>    end
>    def self.down
>      YourTable.remove_ratings_columns
>      Your2Table.remove_ratings_columns
>      ActiveRecord::Base.drop_ratings_table
>    end
>  end
#image(http://farm4.static.flickr.com/3129/2774240309_f38b753efb.jpg)
[[WWW SQL Designer>http://www13.atwiki.jp/maimuzo?cmd=upload&act=open&pageid=45&file=acts_as_rated.xml]]

**コメント
#pcomment(reply)