1

因此,我尝试使用 find_by_created_at 方法在创建日期之前查询微博。首先,我在 rails 控制台中找到了一个 micropost,如下所示:

1.9.3-p194 :027 > Micropost.first

Micropost Load (2.7ms) SELECT "microposts".* FROM "microposts" ORDER BY microposts.created_at DESC LIMIT 1 => #<Micropost id: 409, content: "Apparently it does not like spaces either. Check t...", user_id: 1, created_at: "2013-07-11 22:51:44", updated_at: "2013-07-11 22:51:44", receiver: "self">

然后我将 created_at 输入(减去时间戳)复制并粘贴到我的 find_by_created_at 方法中,如下所示:

1.9.3-p194 :028 > Micropost.find_by_created_at("2013-07-11")

Micropost Load (0.8ms) SELECT "microposts".* FROM "microposts" WHERE "microposts"."created_at" = '2013-07-11 22:51:44' ORDER BY microposts.created_at DESC LIMIT 1 => nil

并且由于某种原因它返回为零。我认为问题可能是因为我没有包括时间,但我也尝试了时间戳,但它仍然返回为零。

我的计划是让用户按日期搜索和显示微博。也许是这样的:

Micopost.find_by_created_at(@search_date).all

但我只是想通过 created_at 找到它。有人能指出我正确的方向吗?谢谢

4

2 回答 2

1

你可以尝试这样的事情:

Micopost.where("DATE(created_at) = ?", "2013-07-11") # Mysql/sqlite database

Micopost.where("created_at::date = ?", "2013-07-11") # PostgreSQL
于 2013-07-12T00:33:25.467 回答
0
Micopost.where(" created_at between ? AND ?", @search_date.beginning_of_day, @search_date.end_of_day)

您还可以使用ryan bigg 的 by_star gem:

Micropost.by_day("2013-07-11")
于 2013-07-12T00:33:37.737 回答