Reputation: 5081
Is it possible to use ActiveRecord named_scope
s to create one query with sql OR
clauses?
When I use
Model.scope1.scope2
generated query is conjunction of these scopes.
Upvotes: 2
Views: 668
Reputation: 346
I reply as this was the first google result for "active record disjunction".
With Rails 5+ you can do something like:
Model.scope1.or(Model.scope2)
For Rails 4.2.3+ there is a backport here.
Eric-Guo created a gem where-or adding or
functionality to rails >=
4.2.3
also using his gem.
Upvotes: 1
Reputation: 51697
This isn't really what named scopes were designed to do, but you could probably use them with some additional code to get what you needed.
def combine_scopes(model)
(model.scope1 + model.scope2).uniq
end
or allow any scopes to be combined
def combine_scopes(model, scope1, scope2)
(model.send(scope1) + model.send(scope2)).uniq
end
you could even change that to allow any number of scopes using *args
Upvotes: 0