提交 aed7e000 编写于 作者: R Ryuta Kamizono

Don't expose internal `get_value`/`set_value` methods

上级 ead86831
......@@ -1125,7 +1125,7 @@ def reset_scope # :nodoc:
SpawnMethods,
].flat_map { |klass|
klass.public_instance_methods(false)
} - self.public_instance_methods(false) - [:select] + [:scoping]
} - self.public_instance_methods(false) - [:select] + [:scoping, :values]
delegate(*delegate_methods, to: :scope)
......
......@@ -909,21 +909,18 @@ def arel(aliases = nil) # :nodoc:
@arel ||= build_arel(aliases)
end
# Returns a relation value with a given name
def get_value(name) # :nodoc:
@values.fetch(name, DEFAULT_VALUES[name])
end
protected
private
# Returns a relation value with a given name
def get_value(name)
@values.fetch(name, DEFAULT_VALUES[name])
end
# Sets the relation value with the given name
def set_value(name, value) # :nodoc:
def set_value(name, value)
assert_mutability!
@values[name] = value
end
private
def assert_mutability!
raise ImmutableRelation if @loaded
raise ImmutableRelation if defined?(@arel) && @arel
......@@ -1188,8 +1185,9 @@ def check_if_method_has_arguments!(method_name, args)
STRUCTURAL_OR_METHODS = Relation::VALUE_METHODS - [:extending, :where, :having, :unscope, :references]
def structurally_incompatible_values_for_or(other)
values = other.values
STRUCTURAL_OR_METHODS.reject do |method|
get_value(method) == other.get_value(method)
get_value(method) == values.fetch(method, DEFAULT_VALUES[method])
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册