1

このクエリには奇妙なことがありますが、私はそれを解決できません

has_manyコメントの投稿モデルがあります。過去24時間のコメントを取得したい

p=Post.first

 p.comments.where("(:t - comments.created_at) <= :d", t: Time.now, d: 1.day)
  Comment Load (1.0ms)  SELECT "comments".* FROM "comments" WHERE "comments"."commentable_id" = 76 AND "comments"."commentable_type" = 'Post' AND (('2013-03-07 06:08:09.045488' - comments.created_at) <= 86400) ORDER BY created_at DESC

p.commentsしかし、これは私に何も与えません

[#<Comment id: 132, title: "", comment: "comment", commentable_id: 76, commentable_type: "Post", user_id: 1, created_at: "2013-03-07 05:43:37", updated_at: "2013-03-07 05:43:37">]

何故ですか?

4

3 に答える 3

3

現在の日付をcreated_atで減算するよりも、日付を比較する方が理にかなっている場合があります。

p.comments.where("comments.created_at > ?", 1.day.ago)
于 2013-03-07T06:22:56.210 に答える
2
p.comments.where(:created_at => 1.day.ago..Time.now)

これはあなたを助けます。これらの時間の間のすべてのコメントをフェッチします。

于 2013-03-07T06:28:57.290 に答える
1

これを試して、

 p.comments.where("(created_at >= :t1) and (created_at < :t2)" , t1: (Time.now - 1.day).beginning_of_day, t2: (Time.now - 1.day).end_of_day)
于 2013-03-07T06:30:44.970 に答える