Today, I may go to bed after midnight...
find_by_sqlを使用して、リンク元の集計処理をするようにしてみました。
def self.get_referer(id = nil)
if id
condition = "diary_id = #{id}"
else
condition = "diary_id IS NULL"
end
self.find_by_sql(<<-SQL)
select
url
, COUNT(*) as 'count'
from
counters
where
#{condition}
group by
url
order by
count DESC
;
SQL
end
すげー、超シンプル。今まではソートしたりなんだりいろいろやっていたのが、Rubyでのコードは一切不要になりました。たったこの一行のSQLだけで。SQL最高。なにより速いし。もっと勉強していろいろやってみよう。楽しくなってきました。method_missingを使うfind_by_*よりも、find_by_sqlを使うほうが全然速いんだろうなあ。