Allow returning nil for `default_scope`
This commit is contained in:
parent
672c6cad78
commit
634953af94
|
@ -100,7 +100,7 @@ module ActiveRecord
|
|||
self.default_scopes += [scope]
|
||||
end
|
||||
|
||||
def build_default_scope(base_rel = nil)
|
||||
def build_default_scope(relation = relation())
|
||||
return if abstract_class?
|
||||
|
||||
if default_scope_override.nil?
|
||||
|
@ -111,15 +111,14 @@ module ActiveRecord
|
|||
# The user has defined their own default scope method, so call that
|
||||
evaluate_default_scope do
|
||||
if scope = default_scope
|
||||
(base_rel ||= relation).merge!(scope)
|
||||
relation.merge!(scope)
|
||||
end
|
||||
end
|
||||
elsif default_scopes.any?
|
||||
base_rel ||= relation
|
||||
evaluate_default_scope do
|
||||
default_scopes.inject(base_rel) do |default_scope, scope|
|
||||
default_scopes.inject(relation) do |default_scope, scope|
|
||||
scope = scope.respond_to?(:to_proc) ? scope : scope.method(:call)
|
||||
default_scope.merge!(base_rel.instance_exec(&scope))
|
||||
default_scope.instance_exec(&scope) || default_scope
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -207,6 +207,7 @@ end
|
|||
class MultiplePoorDeveloperCalledJamis < ActiveRecord::Base
|
||||
self.table_name = "developers"
|
||||
|
||||
default_scope { }
|
||||
default_scope -> { where(name: "Jamis") }
|
||||
default_scope -> { where(salary: 50000) }
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue