Rails3.0 で導入された Arel を試してみたら、なかなか面白い動きをしていました。 Unit を継承した Expense モデルが Reason に紐づいている(belongs_to)として、以下のような scope を作ります。 scope :monthly, lambda {|month| includes(:reason).where( {:occured_on => (month.beginning_of_month)..(month.end_of_month)} ) } で、適当にいくつかの Expense を作ってみて development.log で SQL の具合を確認(なお、以下の SQL で時間の指定が9時間ずれているのはコンフィグでタイムゾーンを東京にしたはずなのにうまくいかないため。そちらは別途調査予定です)。 Expense Load (0.5ms)