Rails1.2.3 ActiveRecordのfindで:includeを使っていると:selectが効かない

前置き:もしかしてOracle限定かも。時間ができたらMySQLでも試してみます。
以下のmodelがあるとします。

class User < ActiveRecord::Base
  belongs_to :role
end

class Role < ActiveRecord::Base
  has_many :users
end

例えばroles.levelが3以上の人数を数えたいとき

cnt = User.find(
  :first,
  :select => "count(*) as cnt",
  :include => :role,
  :conditions => "roles.level >= 3"
).cnt

とすると、'cnt'が'undefined method'だと怒られます。デバッグSQLをみると'select * 'になってしまっているようです。このようなケースでは:joinsを使うとうまくいくようです。

cnt = User.find(
  :first,
  :select => "count(*) as cnt",
  :joins => "left join roles on roles.id = users.role_id",
  :conditions => "roles.level >= 3"
).cnt

これで無事件数を取得できます。:includeの指定時に集合関数が効かないのは、まぁそういうもんかなという気もしますが、それでも何とかしたい不条理な状況は往々にしてあるものなので、その点ActiveRecordは柔軟な対応ができてよいですね。最後にはfind_by_sqlがありますし。