提交 788bd308 编写于 作者: J Jon Leighton 提交者: Aaron Patterson

ActiveRecord::Base.scopes hash is not needed

上级 8572ae66
......@@ -9,11 +9,6 @@ module ActiveRecord
module NamedScope
extend ActiveSupport::Concern
included do
class_attribute :scopes
self.scopes = {}
end
module ClassMethods
# Returns an anonymous \scope.
#
......@@ -135,27 +130,20 @@ def scope(name, scope_options = {})
scope_proc = lambda do |*args|
options = scope_options.respond_to?(:call) ? scope_options.call(*args) : scope_options
options = scoped.apply_finder_options(options) if options.is_a?(Hash)
relation = if options.is_a?(Hash)
scoped.apply_finder_options(options)
elsif options
scoped.merge(options)
else
scoped
end
relation = scoped.merge(options)
extension ? relation.extending(extension) : relation
end
self.scopes = self.scopes.merge name => scope_proc
singleton_class.send(:redefine_method, name, &scopes[name])
singleton_class.send(:redefine_method, name, &scope_proc)
end
protected
def valid_scope_name?(name)
if !scopes[name] && respond_to?(name, true)
if respond_to?(name, true)
logger.warn "Creating scope :#{name}. " \
"Overwriting existing method #{self.name}.#{name}."
end
......
......@@ -416,8 +416,6 @@ def with_default_scope #:nodoc:
def method_missing(method, *args, &block)
if Array.method_defined?(method)
to_a.send(method, *args, &block)
elsif @klass.scopes[method]
merge(@klass.send(method, *args, &block))
elsif @klass.respond_to?(method)
scoping { @klass.send(method, *args, &block) }
elsif arel.respond_to?(method)
......
......@@ -58,17 +58,6 @@ def test_respond_to_respects_include_private_parameter
assert Topic.approved.respond_to?(:tables_in_string, true)
end
def test_subclasses_inherit_scopes
assert Topic.scopes.include?(:base)
assert Reply.scopes.include?(:base)
assert_equal Reply.find(:all), Reply.base
end
def test_classes_dont_inherit_subclasses_scopes
assert !ActiveRecord::Base.scopes.include?(:base)
end
def test_scopes_with_options_limit_finds_to_those_matching_the_criteria_specified
assert !Topic.find(:all, :conditions => {:approved => true}).empty?
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册