Rails を使った開発で、アプリにタグ機能を実装する場合、これまでは acts-as-taggable 系のプラグインが定番でした。acts-as-taggable とか acts-as-taggable-on とか、acts-as-taggable-on-steroid とか。まだあった気がする。
で、今回 Rails3 で開発しているアプリにタグを付けるために、対応状況を調べてみたんですが、残念なことに現時点で Rails3 にちゃんと対応しているのは acts-as-taggable-on だけでした。対応しているプラグインが1つあるだけでも恩の字ですけど。他のは GitHub にリポジトリはあるものの、更新が滞っているものばかりでしたから。
あと、調べる前は期待していなかったんですが、なんと acts-as-taggable-on はジェネレータだけでなく、スコープにも対応していました。嬉しい誤算です。タグで絞り込んで、さらに kaminari でページング、なんてことが出来るのでなかなかステキ。
以下、作業メモ。
Gemfile に追加
gem "acts-as-taggable-on"
gem をインストール
bundle
マイグレーション
rails g acts_as_taggable_on:migration rake db:migrate
モデルを修正
class Book < ActiveRecord::Base acts_as_taggable end
タグで検索
@books = Book.tagged_with("test")
モデルで使用されているタグを取得
@tags = Book.tag_counts
タグを使用されている順に取得
@tags = Book.all_tag_counts