プラグイン名
acts_as_favoriteプラグイン
このプラグインができること
- ユーザ毎にお気に入り(モデル内の特定レコード)を管理できる
- このユーザはBookモデルのid=1と4と23をお気に入りに登録してある、みたいな感じ
ちょー簡単な使い方
でインストールして、RAILS_HOMEにて
script/generate favorite_model Favorite
とすると、Favoriteモデルとマイグレーションファイルが生成されるので、
rake db:migrate
して、ユーザモデルに(acts_as_authenticated系使ったらこんなシンプルじゃないけど)
class User < ActiveRecord::Base
acts_as_favorite_user
end
を追加し、お気に入りに登録可能にしたいモデル全てに
class Blog < ActiveRecord::Base
acts_as_favorite
end
としておくと、以下のようなメソッドが使えるようになる。
お気に入りに追加
current_user.has_favorite(Blog.find(43))
お気に入りから削除
current_user.has_no_favorite(Blog.find(43))
お気に入りへの追加状況確認(returns true/false):
current_user.has_favorite?(Blog.find(99)) #=> true/false
current_user.has_favorite_blogs? #=> true/false Blogモデルはこのユーザのお気に入りに登録されているか?
検索
current_user.all_favorites (ユーザのお気に入りが全て返る。blogsや他のモデルも一緒くた)
current_user.favorite_blogs (ユーザのお気に入りのうちBlogモデルに関する分だけ返る)
Blog.find(43).favorite_users (このレコードをお気に入りに入れた全ユーザが返る)
公式ページ
日本語解説ページ
外国語解説ページ
※プラグインインストール時にサンプルが表示されるけど、それ見ても良い(英語)
のうはう
- バグがあったようだけど、本家にマージされたみたい
- マイグレーション内容
class CreateFavorites < ActiveRecord::Migration
def self.up
create_table :favorites, :force => true do |t|
t.column :user_id, :integer
t.column :favorable_type, :string, :limit => 30
t.column :favorable_id, :integer
t.column :created_at, :datetime
t.column :updated_at, :datetime
end
end
def self.down
drop_table :favorites
end
end
コメント
最終更新:2008年08月22日 00:55