Koyaに、オブジェクトが参照しているオブジェクトのうち、指定した値のインスタンス変数を持つものを問い合わせるメソッドを追加してしまった。本当によかったのかなあ。refererとか、extentとかすでに持っているのから、まあ気にしなくて良いか。検索ではなく、トラバースでオブジェクトにたどり着けるようにするのが正義(ほんとか?)だと思ってたので、気が引ける。
トラバースなら、ふつうのRubyみたいに書くことになるけど、検索を最適化するチャンスはない。
collection.find_all {|x| x.name == 'foo'}
Koyaに追加しちゃったのはこういうの。データベース中のオブジェクト空間を直接検索するので、(sqliteがそういうことをするなら)検索を最適化してくれるはず。
collection.search({:name => 'foo'})
それに、前者はnameメッセージを送った結果が'foo'であるのに対して、後者はインスタンス変数が'foo'であるものを見つけてしまうので、Rubyっぽくない。