Sometimes, we want to query records over the whole day for a given date.
>> User.where(created_at: Date.today.beginning_of_day..Date.today.end_of_day)
=> SELECT "users".* FROM "users" WHERE ("users"."created_at" BETWEEN $1 AND $2) [["created_at", 2017-04-09 00:00:00 UTC], ["created_at", 2017-04-09 23:59:59 UTC]]
Rails 5.1 has
introduced a helper method for
creating this range object for a given date in the form of Date#all_day.
>> User.where(created_at: Date.today.all_day)
=> SELECT "users".* FROM "users" WHERE ("users"."created_at" BETWEEN $1 AND $2) [["created_at", 2017-04-09 00:00:00 UTC], ["created_at", 2017-04-09 23:59:59 UTC]]
We can confirm that the Date#all_day method returns the range object for a
given date.
>> Date.today.all_day
=> Sun, 09 Apr 2017 00:00:00 UTC +00:00..Sun, 09 Apr 2017 23:59:59 UTC +00:00

Written byPrathamesh Sonpatki
Related blogs
- 01Rails 5.1 stops loading all records on Model.all#inspectNovember 14, 2017 · Mohit Natoo
- 02New Syntax for HTML Tag helpers in Rails 5.1August 23, 2017 · Prathamesh Sonpatki
- 03Rails 5.1 enhances ActiveSupport::TimeZone.country_zonesJuly 18, 2017 · Narendra Rajput
- 04Rails 5.1 dropped jQuery dependency in default stackJune 20, 2017 · Neeraj Singh