module ESA::Traits::OrScope::ClassMethods

Public Instance Methods

or_scope(*scopes) click to toggle source
# File app/models/esa/traits/or_scope.rb, line 16
def or_scope(*scopes)
  conditions = 
    scopes
      .map { |scope| "(#{scope.where_clauses.map{ |clause| "(#{clause})"}.join(" AND ")})" }
      .join(" OR ")
      
  relationships =
    scopes
      .map { |scope| scope.joins_values }
      .flatten
      .uniq
      
  joins(*relationships).where(conditions)
end