Returning count from named scope

Sorry if this is a duplicate post, but Google Groups is having issues
again. :frowning:

I have the following named scope in a Rails 3.0.5 model:

  scope :past_due,
        where('NOT complete AND requested_start_date < ?',
Date.today).
        order('requested_start_date ASC')

and I'd like to have a named scope that reuses the :past_due scope to
return a count of matching records. It's easy to do in the controller,
but I can't seem to find the right incantation to create

What is the right way to do this?

Phil

Sorry if this is a duplicate post, but Google Groups is having issues

again. :frowning:

I have the following named scope in a Rails 3.0.5 model:

scope :past_due,

    where('NOT complete AND requested_start_date < ?',

Date.today).

    order('requested_start_date ASC')

and I’d like to have a named scope that reuses the :past_due scope to

return a count of matching records. It’s easy to do in the controller,

but I can’t seem to find the right incantation to create

a :past_due_count scope in the model.

What is the right way to do this?

You usually don’t use a scope to return a count; you use it to return an array, some subset of #all. If you just need the count of the same scope, won’t Model.past_due.count work?

Just call past_due.count. A scope is basically a set of query options
(conditions, joins, orders etc) that can then be used to restrict the
scope of actions such as updating, finding records etc, there isn't
really such a thing as a count scope (I suppose you could add
select('count(*)') to a scope but that would just be a bit perverse.

Fred