轨道:按created_at beginning_of_week查找记录



有没有办法按created_at查找记录:beginning_of_week?
像这样:

Message.find_by(created_at: Date.today.beginning_of_week). 

但它不起作用。

>因为created_at是一个同时包含日期和时间值的DateTime对象,所以你的

Message.find_by(created_at: Date.today.beginning_of_week)
# Message Load (6.2ms)  SELECT  "messages".* FROM "messages" WHERE "messages"."created_at" = $1 LIMIT $2  [["created_at", "2018-01-29"], ["LIMIT", 1]]

。将尝试在正好2018-01-29 00:00:00查找一条记录,该记录是在午夜精确创建的 Message 记录,而不是您可能期望的2018-01-29。您不想要那个,而是想要当天创建的任何记录(据我理解您的问题(。因此,您可以改为尝试以下操作。

date_beginning_this_week = Date.today.beginning_of_week
Message.where(created_at: date_beginning_this_week..(date_beginning_this_week + 1.day))
# Message Load (0.2ms)  SELECT  "messages".* FROM "messages" WHERE ("messages"."created_at" BETWEEN $1 AND $2) LIMIT $3  [["created_at", "2018-01-29"], ["created_at", "2018-01-30"], ["LIMIT", 11]]

最新更新