Colin Law wrote:
No. �Don't. �It's a bad idea. �It should never be necessary. �Did you
read the link I posted?
Marnen, I am not sure what you are saying should never be necessary.
Suppose I have named_scope_a and named_scope_b. Are you saying it
should never be necessary to find the set of records that includes all
those in _a and those in _b?
No. I am saying that it should never be possible -- or necessary -- to
do Person.scope_a.and_some_more_records . IMHO, that defeats the
purpose of named_scopes, because the results of the scope chain are no
longer guaranteed to be within scope_a. That's dangerous. If this
syntax were possible, then there would be no obvious difference between
a proper chain like Person.red_hair.blue_eyes and an improper chain like
If not that then what is the best way?
To provide a new named scope for the OR condition does not seem very
It's a completely different scope from either of its constituents.
What's repetitive about that, particularly if you factor out duplication
in other ways?
I'd actually support a syntax for union queries such as
Person.union_scope(:scope_a, :scope_b). This makes it obvious that it
is not a simple scope chain, while still being simple to call.