diff options
| -rw-r--r-- | activerecord/lib/active_record/null_relation.rb | 17 | ||||
| -rw-r--r-- | activerecord/lib/active_record/relation/query_methods.rb | 2 | ||||
| -rw-r--r-- | activerecord/test/cases/relations_test.rb | 7 | 
3 files changed, 15 insertions, 11 deletions
diff --git a/activerecord/lib/active_record/null_relation.rb b/activerecord/lib/active_record/null_relation.rb index c2d3eeb8ce..aca8291d75 100644 --- a/activerecord/lib/active_record/null_relation.rb +++ b/activerecord/lib/active_record/null_relation.rb @@ -2,24 +2,24 @@  module ActiveRecord    # = Active Record Null Relation -  class NullRelation < Relation +  module NullRelation      def exec_queries        @records = []      end -    def pluck(column_name) +    def pluck(_column_name)        []      end -    def delete_all(conditions = nil) +    def delete_all(_conditions = nil)        0      end -    def update_all(updates, conditions = nil, options = {}) +    def update_all(_updates, _conditions = nil, _options = {})        0      end -    def delete(id_or_array) +    def delete(_id_or_array)        0      end @@ -51,13 +51,12 @@ module ActiveRecord        0      end -    def calculate(operation, column_name, options = {}) +    def calculate(_operation, _column_name, _options = {})        nil      end -    def exists?(id = false) +    def exists?(_id = false)        false      end -    end -end
\ No newline at end of file +end diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index 19fe8155d9..a89d0f3ebf 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -279,7 +279,7 @@ module ActiveRecord      #   end      #      def none -      NullRelation.new(@klass, @table) +      scoped.extending(NullRelation)      end      def readonly(value = true) diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb index 2dc8f0053b..90367df5ee 100644 --- a/activerecord/test/cases/relations_test.rb +++ b/activerecord/test/cases/relations_test.rb @@ -226,7 +226,6 @@ class RelationTest < ActiveRecord::TestCase      assert_no_queries do        assert_equal [], Developer.none        assert_equal [], Developer.scoped.none -      assert           Developer.none.is_a?(ActiveRecord::NullRelation)      end    end @@ -236,6 +235,12 @@ class RelationTest < ActiveRecord::TestCase      end    end +  def test_none_chainable_to_existing_scope_extension_method +    assert_no_queries do +      assert_equal 1, Topic.anonymous_extension.none.one +    end +  end +    def test_none_chained_to_methods_firing_queries_straight_to_db      assert_no_queries do        assert_equal [],    Developer.none.pluck(:id) # => uses select_all  | 
