method
build_scope
v5.0.0.1 -
Show latest stable
- Class:
ActiveRecord::Associations::Preloader::Association
build_scope()private
No documentation available.
# File activerecord/lib/active_record/associations/preloader/association.rb, line 119
def build_scope
scope = klass.unscoped
values = reflection_scope.values
preload_values = preload_scope.values
scope.where_clause = reflection_scope.where_clause + preload_scope.where_clause
scope.references_values = Array(values[:references]) + Array(preload_values[:references])
if preload_values[:select] || values[:select]
scope._select!(preload_values[:select] || values[:select])
end
scope.includes! preload_values[:includes] || values[:includes]
if preload_scope.joins_values.any?
scope.joins!(preload_scope.joins_values)
else
scope.joins!(reflection_scope.joins_values)
end
if order_values = preload_values[:order] || values[:order]
scope.order!(order_values)
end
if preload_values[:reordering] || values[:reordering]
scope.reordering_value = true
end
if preload_values[:readonly] || values[:readonly]
scope.readonly!
end
if options[:as]
scope.where!(klass.table_name => { reflection.type => model.base_class.sti_name })
end
scope.unscope_values = Array(values[:unscope]) + Array(preload_values[:unscope])
klass.default_scoped.merge(scope)
end