acts_as_taggable_alternate

Railsで「タグ」を実装する場合には「acts_as_taggable」を利用するのがスタンダードと思われるが、実際に使用してみたところ結構不満点がでてきた。

  1. find_tagged_with
    1. なんでAR#findの各オプションが使えないの?
      • 「:include」「:order」「:conditions」あたりのオプションは使いたくなることが多いと思う。特にARモデルのリスト表示をする際に「:include => :tags」としたいことは多いんじゃないかなぁ。
    2. 複数のタグを指定するとどうしてOR条件で検索されるの?
      • タグで検索する場合って複数のタグを指定したら絞り込みを期待するのが普通なんじゃないのかな?
  2. ページネーションをするにはSQL文書かないと駄目?
    • 自分の力不足なのかもしれないけれどcount取得するところでどうしてもfind_by_sqlを実行しないと取れない。ライブラリ側でラップしてくれればいいのになぁ。
  3. 出来れば全角スペースも裏でよきにはからって欲しいなぁ
    • マルチバイト圏の人にしかわからぬ悩みだよね。\sに全角スペースが仲間入りするのが一番嬉しいんだけど。

ActsAsTaggableHowToにカスタマイズ方法や他の人が拡張したPluginも紹介されていたけど、しっくりくるものが無かったのでalternate版を作ってみた。

特徴:

  1. acts_as_taggable (Rails Plugin版)の機能は全てそのまま使える
  2. AR#findのOptionが(多分)全て使える
  3. ページネーションが簡単に実現できる
  4. タグクラウドが簡単に出力できる

ZIP:http://rubyforge.org/projects/rubricks/
SVNsvn://dev.rubricks.org/var/svn/rubricks/plugins/acts_as_taggable_alternate/trunk/acts_as_taggable_alternate
APIhttp://dev.rubricks.org/wiki/RubricksDevelopmentActsAsTaggableAlternateJa


includeやpaginateの処理に関してはSQL文を書いているので、様々な実行環境に対応できているとは言い難い。使ってくれる奇特な方がいれば動作報告をもらえると嬉しいです。


(2007/07/12 追記)
Rubricksプラグインを自前のacts_as_taggableに変えた途端、色々と要望がきたので頻出タグを抽出するメソッドとタグクラウドを出力するヘルパを追加。


(2007/07/13 追記)
3日間で4リリース。ちゃんと使い込んでから出さないと駄目だな。コミットログをみながら恥ずかしさに悶絶。どこにも宣伝していないのだが既に数人ダウンロードして頂いた方がいらっしゃるようだ。ごめんなさい、最新版に差し替えて下さい。


(2007/07/20 追記)
「acts_as_taggable」だと本家と紛らわしいとのご指摘を頂いたのでプラグイン名を変更した。


(2007/07/26 追記)
ドキュメントをちゃんと書いたので、リンクを貼って当記事からは削除したらやけにすっきりした。気が向いたら利用例でも書こうか。