--- layout: old_post title: Rails Pluginのacts_as_taggableが機能追加されてる permalink: /tatsuya/show/306-rails-plugin-acts-as-taggable ---
acts_as_taggable を利用してこのブログにタグ機能を付けてる(del.icio.usからのだけ)、ふと order by create_date desc を設定したいと思いついた。でも現状のVer.じゃあできないじゃん、しょぼーん;)と思って最新版を調べたらどうも色々と機能追加されてるみたい。
ActsAsTaggablePluginHowto in Ruby on Rails
「acts_as_taggableの開発が進まないから有志で開発した改良版だ」というようなことが書いてある気もするけど違うかも。既存のVer.を使用してたのでアップデートした(既存Verのインストール)
rm -rf vender/plugin/acts_as_taggable ruby script/plugin install http://svn.viney.net.nz/things/rails/plugins/acts_as_taggable_on_steroids/
アップデート完了、order byを付ける修正
//Old @posts = Post.find_tagged_with(params['tag']) //New @posts = Post.find_tagged_with(params['tag'],{:order=>"create_date desc"})
うむうむ、動作確認OK。:orderの他に :conditions なんかもOKみたい。詳細は上のリンク先を読むとして、ざっくり新機能としては以下
find_tagged_with メソッドが各種オプション対応
order、conditions、limitに対応?色々凝ったことができる
>> Post.find_tagged_with("web",{:order=>"create_date desc", :limit=>3}) => [#<Delpost:0x268307c @attributes={"body"=>"<div><div><a href=.........
tags_count メソッドを追加、タグ名毎に集計してくれる。
orderやconditions指定も可能。countプロパティに集計数が入る
>> Post.tag_counts(:order=>"create_date desc") => [#<Tag:0x26680c4 @attributes={"name"=>"Spotlight", "id"=>"90", "count"=>"12"}>,#<Tag:........
Tag.delimiterをenvironment.rbで設定することで区切り文字を変更
Tag.delimiter = "," でカンマ区切りとか
tags_countメソッドでカウント数が取れるようになったのは嬉しい、これまでfind_by_sqlでごりごりSQLを書いていたけど凄いコードが綺麗になった。タグクラウドにするしか無いよね、ということでタグリストをタグクラウド風にしてやった、満足、満足。