Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge pull request #2063 from elight/master

Patch for #2059
  • Loading branch information...
commit 31ea0276a4f6059799ec031757caf2511d9c90c5 2 parents d632e92 + f13dea8
@spastorino spastorino authored
View
3  activerecord/lib/active_record/base.rb
@@ -1638,7 +1638,8 @@ def cache_key
when new_record?
"#{self.class.model_name.cache_key}/new"
when timestamp = self[:updated_at]
- "#{self.class.model_name.cache_key}/#{id}-#{timestamp.to_s(:number)}"
+ timestamp = timestamp.utc.to_s(:number)
+ "#{self.class.model_name.cache_key}/#{id}-#{timestamp}"
else
"#{self.class.model_name.cache_key}/#{id}"
end
View
29 activerecord/test/cases/base_test.rb
@@ -488,11 +488,11 @@ def test_equality_of_destroyed_records
def test_hashing
assert_equal [ Topic.find(1) ], [ Topic.find(2).topic ] & [ Topic.find(1) ]
end
-
+
def test_comparison
topic_1 = Topic.create!
topic_2 = Topic.create!
-
+
assert_equal [topic_2, topic_1].sort, [topic_1, topic_2]
end
@@ -1835,4 +1835,29 @@ def test_attribute_names_on_table_not_exists
def test_attribtue_names_on_abstract_class
assert_equal [], AbstractCompany.attribute_names
end
+
+ def test_cache_key_for_existing_record_is_not_timezone_dependent
+ ActiveRecord::Base.time_zone_aware_attributes = true
+
+ Time.zone = "UTC"
+ utc_key = Developer.first.cache_key
+
+ Time.zone = "EST"
+ est_key = Developer.first.cache_key
+
+ assert_equal utc_key, est_key
+ ensure
+ ActiveRecord::Base.time_zone_aware_attributes = false
+ end
+
+ def test_cache_key_format_for_existing_record_with_updated_at
+ dev = Developer.first
+ assert_equal "developers/#{dev.id}-#{dev.updated_at.utc.to_s(:number)}", dev.cache_key
+ end
+
+ def test_cache_key_format_for_existing_record_with_nil_updated_at
+ dev = Developer.first
+ dev.update_attribute(:updated_at, nil)
+ assert_match /\/#{dev.id}$/, dev.cache_key
+ end
end
Please sign in to comment.
Something went wrong with that request. Please try again.