2.0でタグ付け(taggingとも言うのかな)
2.0でacts_as_taggableを使おうと思ってハマりました。
2.0では
- gemのacts_as_taggableが動かない
- pluginの方もなんだかうまく動かない
というわけで、2.0にはacts_as_taggable_on_steroidsがよさげです。
http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids
まず、インストール
./script/plugin install http://svn.viney.net.nz/things/rails/plugins/acts_as_taggable_on_steroids
次にmigrationファイルを作成します。
./script/generate acts_as_taggable_migration
migrationを実行して、テーブルを作成します。
rake db:migrate
次に、モデルの中で定義します。
class Post < ActiveRecord::Base acts_as_taggable end
この1行で次のような使い方ができるようになります。
p = Post.find(:first) p.tag_list # [] p.tag_list = "Funny, Silly" p.save p.tag_list # ["Funny", "Silly"] p.tag_list.add("Great", "Awful") p.tag_list.remove("Funny")
さらに検索も便利です。
Post.find_tagged_with('Funny, Silly')
これだと、FunnyかSillyのどちらかにヒットしたレコードが取得できます。
Post.find_tagged_with('Funny, Silly', :match_all => true)
これだと、FunnyとSillyの両方にタグ付けされているレコードが取得できます。