From 9210a72c4ca719d6745725f3d8b6e6c5bd249fba Mon Sep 17 00:00:00 2001 From: albert Date: Sun, 17 Mar 2013 20:26:00 -0400 Subject: [PATCH] addresses #927, make date searches time zone aware --- app/logical/post_query_builder.rb | 6 +++++- app/logical/post_sets/popular.rb | 4 ++-- app/models/tag.rb | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index d3712241e..5d9055f52 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -21,7 +21,11 @@ class PostQueryBuilder case arr[0] when :eq - relation.where(["#{field} = ?", arr[1]]) + if arr[1].is_a?(Time) + relation.where("#{field} between ? and ?", arr[1].beginning_of_day, arr[1].end_of_day) + else + relation.where(["#{field} = ?", arr[1]]) + end when :gt relation.where(["#{field} > ?", arr[1]]) diff --git a/app/logical/post_sets/popular.rb b/app/logical/post_sets/popular.rb index 30550cd6c..99e4dd956 100644 --- a/app/logical/post_sets/popular.rb +++ b/app/logical/post_sets/popular.rb @@ -3,12 +3,12 @@ module PostSets attr_reader :date, :scale def initialize(date, scale) - @date = date.blank? ? Date.today : date.to_date + @date = date.blank? ? Time.zone.now : Time.zone.parse(date) @scale = scale end def posts - ::Post.where("created_at between ? and ?", min_date, max_date + 1).order("score desc").limit(limit) + ::Post.where("created_at between ? and ?", min_date.beginning_of_day, max_date.end_of_day).order("score desc").limit(limit) end def limit diff --git a/app/models/tag.rb b/app/models/tag.rb index 7be0e2675..2579e2088 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -174,7 +174,7 @@ class Tag < ActiveRecord::Base when :date begin - object.to_date + Time.zone.parse(object) rescue Exception nil end