From 096a57b7f340884175f724b55c7bbeda6318b356 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 18 Sep 2013 15:53:38 -0700 Subject: do what the superclass does in the case that objects do not match --- activerecord/lib/active_record/core.rb | 2 ++ activerecord/test/cases/base_test.rb | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/activerecord/lib/active_record/core.rb b/activerecord/lib/active_record/core.rb index b4d6474caa..07d997b719 100644 --- a/activerecord/lib/active_record/core.rb +++ b/activerecord/lib/active_record/core.rb @@ -312,6 +312,8 @@ module ActiveRecord def <=>(other_object) if other_object.is_a?(self.class) self.to_key <=> other_object.to_key + else + super end end diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index e3b441280b..20c3a2b6a4 100644 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -579,6 +579,14 @@ class BasicsTest < ActiveRecord::TestCase assert_nil topic <=> category end + def test_comparison_with_different_objects_in_array + topic = Topic.create + category = Category.create(:name => "comparison") + assert_raises(ArgumentError) do + [1, topic].sort + end + end + def test_readonly_attributes assert_equal Set.new([ 'title' , 'comments_count' ]), ReadonlyTitlePost.readonly_attributes -- cgit v1.2.3