I've run into an issue in Rails 3.1 RC4 where the count query is
failing because of a default_scope. The scope has an include and a
condition on the included association but count is dropping the
include. Here's what it looks like -
default_scope where('campaigns.inactive = ?',
false).order('funds.name').includes(:campaigns)
Rails 3.1 RC4 -
ruby-1.9.2-p180 :001 > Fund.count
[2011-06-12 14:35:43 | WARN | n/a | named_scope.rb:175:in
`valid_scope_name?']
Creating scope :all. Overwriting existing method Fund.all.
[2011-06-12 14:35:43 | DEBUG | n/a | log_subscriber.rb:105:in `debug']
(0.4ms) SELECT COUNT(*) FROM "funds" WHERE (campaigns.inactive = 'f')
ActiveRecord::StatementInvalid: PGError: ERROR: missing FROM-clause
entry for table "campaigns"
LINE 1: SELECT COUNT(*) FROM "funds" WHERE (campaigns.inactive =
'f...
Rails 3.0.8 -
ruby-1.9.2-p180 :001 > Fund.count
=> 1
SQL (43.8ms) SELECT COUNT(DISTINCT "funds"."id") FROM "funds" LEFT
OUTER JOIN "campaigns" ON "campaigns"."fund_id" = "funds"."id" WHERE
(campaigns.inactive = 'f')