1

このクエリを使用して、特定の日 (今日) に割り当てられたレコードをフィルター処理しようとしています。

assignments = p.assignments.where("assigned_date = ?", Date.today)

これらのレコードが存在することはわかっていますが、常に空白の結果が返されます。...where(:assigned_date => Date.today) も試しましたが、うまくいきませんでした。

データベース スキーマは次のとおりです。

# == Schema Information
#
# Table name: assignments
#
#  id                   :integer         not null, primary key
#  name                 :string(255)
#  rep                  :integer
#  set                  :integer
#  instructions         :text
#  created_at           :datetime        not null
#  updated_at           :datetime        not null
#  player_id            :integer
#  actual_percentage    :float
#  predicted_percentage :float
#  assigned_date        :date
#

コンソールで、入力すると

p.assignments.first.assigned_date == Date.today

true を返します。私が間違っていることは何か分かりますか?

4

1 に答える 1

1

DateTime は日付と時刻を保持するため、同じ日だけでなく、正確な値を持つレコードを探しています。

assignments = p.assignments.where('assigned_date BETWEEN ? AND ?', DateTime.now.beginning_of_day, DateTime.now.end_of_day).all

期待されるものを返す必要があります

PSタッドマン
のすべてのクレジット

于 2013-04-13T21:14:42.990 に答える