0

特定の日に作成された任意のモデルのオブジェクトをデータベースに照会したいのですが、これを行う良い方法は何ですか?

SQL クエリでは、次を使用して、昨日作成されたオブジェクトをクエリしました。

where (created_at AT TIME ZONE 'EDT') > (now() AT TIME ZONE 'EDT')::DATE - 1 および (created_at AT TIME ZONE 'EDT') < (now() AT TIME ZONE 'EDT'): :日にち

RubyでActiveRecord呼び出しを使用して同じことをしたいです。

ありがとう!

4

2 に答える 2

3

今日作成されたすべてのアイテムのスコープとしての例:

scope :created_today, -> { where('created_at between ? AND ?', Time.zone.now.beginning_of_day, Time.zone.now.end_of_day) }

詳細については、PostgreSQL サイトを参照してください。

于 2013-11-01T19:18:57.043 に答える
-2

範囲で行うのではなく、データベースでキャストを行い、そこで現在の日付を選択します。DATE(created_at) でこれを行うことができます (結果は "2013-11-01" になります)。

Model.where("DATE(created_at) = ?", Date.today)

それが複数の場所で使用されている場合は、Morner が提案したようにスコープを作成することをお勧めします。

scope :created_today { where("DATE(created_at) = ?", Date.today) }

名前付き:

scope :created_today_with_name lambda do |name| 
  where("DATE(created_at) = ? AND name = ?", Date.today, name)
end

またはチェーン:

scope :created_today_with_name lambda do |name| 
  where("DATE(created_at) = ?", Date.today).where(name: name)
end

次に、次のように呼び出します。

Model.created_today_with_name('Joe')
于 2013-11-01T19:19:17.717 に答える