acts_as_taggable_reduxのtag_listメソッド
以前、以下のエントリーにて結構いじって自分用にカスタマイズしたacts_as_taggable_reduxだけど、昨日、ふと気づいたのでさらに修正。
(以前のエントリー: http://d.hatena.ne.jp/yotena/20071217/1197901746 )
動きとしては修正後のほうが正しいと思う。たぶん普通の人にとっては...。
オリジナル
def tag_list(user = nil) unless user tags.collect { |tag| tag.name.include?(" ") ? %("#{tag.name}") : tag.name }.join(" ") else tags.delete_if { |tag| !user.tags.include?(tag) }.collect { |tag| tag.name.include?(" ") ? %("#{tag.name}") : tag.name }.join(" ") end end
修正後
def tag_list(user = nil) unless user tags.uniq.collect { |tag| tag.name.include?(" ") ? %("#{tag.name}") : tag.name }.join(" ") else taggings.find(:all, :conditions=>['user_id=?', user.id]).map { |tagging| tagging.tag }.uniq.collect { |tag| tag.name.include?(" ") ? %("#{tag.name}") : tag.name }.join(" ") end end
その他の改造部分については、以下参照