From 129e93dd12841e5fba21aacf9c0ab899adb3a2ad Mon Sep 17 00:00:00 2001 From: Bertocq Date: Wed, 14 Jun 2017 01:15:26 +0200 Subject: [PATCH 1/2] Use Time.current converted to Date by the database DirectMessage today scope Why: * Database stores created_at as timestamp with the timezone, so when comparing DATE(created_at) to something we have to convert it to DATE as well with the postresql native function, but using Time.current instead of Date.current to take into account the user timezone --- app/models/direct_message.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/direct_message.rb b/app/models/direct_message.rb index b36cca705..ae14e652d 100644 --- a/app/models/direct_message.rb +++ b/app/models/direct_message.rb @@ -8,7 +8,7 @@ class DirectMessage < ActiveRecord::Base validates :receiver, presence: true validate :max_per_day - scope :today, lambda { where('DATE(created_at) = ?', Date.current) } + scope :today, lambda { where('DATE(created_at) = DATE(?)', Time.current) } def max_per_day return if errors.any? From cc0146e372d237c815410643b9caf333bdf38a94 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Wed, 14 Jun 2017 01:17:32 +0200 Subject: [PATCH 2/2] Use Time in utc on direct message specs when changing created_at directly --- spec/models/direct_message_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/models/direct_message_spec.rb b/spec/models/direct_message_spec.rb index 05c3f75cd..28b30b0ce 100644 --- a/spec/models/direct_message_spec.rb +++ b/spec/models/direct_message_spec.rb @@ -65,9 +65,9 @@ describe DirectMessage do describe "today" do it "should return direct messages created today" do - direct_message1 = create(:direct_message, created_at: Time.current.beginning_of_day + 3.hours) - direct_message2 = create(:direct_message, created_at: Time.current) - direct_message3 = create(:direct_message, created_at: Time.current.end_of_day) + direct_message1 = create(:direct_message, created_at: Time.now.utc.beginning_of_day + 3.hours) + direct_message2 = create(:direct_message, created_at: Time.now.utc) + direct_message3 = create(:direct_message, created_at: Time.now.utc.end_of_day) expect(DirectMessage.today.count).to eq 3 end