Sorry if this is a duplicate post, but Google G. is having issues
again.
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?
Phil
On Fri, Mar 11, 2011 at 4:50 PM, Todd A. Jacobs <
[email protected]> wrote:
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?
On Mar 11, 10:50pm, “Todd A. Jacobs” [email protected]
wrote:
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?
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