困ったときのメモ ver.2.0

主に Ruby on Rails のメモ。など。

acts_as_taggable_onを使ってみるー

そしてもう自力でタグ付けできないカラダに。

ブログやらブックマークやらでタグ付けが便利なんだけど、もうGem使った方がいいよなーと思って。
便利すぎてもう自力でやる気がなくなりましたとさ。タグクラウドまでも。

基本的な使い方はこちらを参考に。
http://wine4u.seesaa.net/article/169189619.html

とりあえず

「タグ名」と「関連付け」の2個のテーブルができる。「関連付け」のテーブルには、相手テーブル名とタグ種別(?)みたいなものを保持している。
なので、これさえあれば複数のテーブルにタグ付け出来るので、やたらとテーブルが増えたりすることもなくていいかんじ。

ただ、Rails3.1.0rc5でWarningでてます。

フォームについて

タグの入力については、半角カンマ区切りで複数入力できる。
で、「チェックボックス」+「テキストフィールド」の組み合わせで「既存」+「新規」とやるときはこんな感じでやってみた。

注:ArticleモデルにTagをつけてます。

  <div class="field">
    <% Article.tag_counts.each do |tag| %>
      <%= f.check_box :tag_list, {:id => "article_#{tag}", :multiple => true, :checked => @article.tag_list.include?(tag.to_s)}, tag, nil %>
      <%= f.label tag, tag %><br />
    <% end %>
    <%= f.text_field :tag_list, :name => 'article[tag_list][]', :value => nil %>
  </div>

あいかわらず、雑な感じです。もっとキレイに書けるようになりたい・・・
誰か添削してくれないかなー。

おわりー

「check_box」と「check_box_tag」の書き方やらもー。ね。覚えられないよ。


〜〜〜 2011 09 12 追記 〜〜〜

パフォーマンスあーーっぷ

ログみるとtagsテーブル見に行っててきついっぽい。
で、調べてみたらcached_XXXX_listフィールドを追加すればよいらしい。

articlesテーブルにフィールド追加

rails g migration add_column_to_articles cached_tag_list:string
rake db:migrate

ビューのほうではこのフィールドを表示するようにすればよいみたい。