Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么我的Model.where()返回一个空白数组(当我确定存在匹配项时)?_Ruby On Rails - Fatal编程技术网

Ruby on rails 为什么我的Model.where()返回一个空白数组(当我确定存在匹配项时)?

Ruby on rails 为什么我的Model.where()返回一个空白数组(当我确定存在匹配项时)?,ruby-on-rails,Ruby On Rails,我做了什么错误的事情,从这个命令中给了我一个空白数组 Item.where(:load_date => Date.today + 2) 这是我的Rails控制台: .9.3-p194 :024 > Item.first.load_date Item Load (0.3ms) SELECT "items".* FROM "items" LIMIT 1 => Fri, 24 May 2013 1.9.3-p194 :025 > Item.where(:load_date

我做了什么错误的事情,从这个命令中给了我一个空白数组

Item.where(:load_date => Date.today + 2)
这是我的Rails控制台:

.9.3-p194 :024 > Item.first.load_date
Item Load (0.3ms)  SELECT "items".* FROM "items" LIMIT 1
=> Fri, 24 May 2013 
1.9.3-p194 :025 > Item.where(:load_date => Date.today + 2)
Item Load (0.5ms)  SELECT "items".* FROM "items" WHERE "items"."load_date" = '2013-05-24'
=> []
1.9.3-p194 :026 > Item.first.load_date == Date.today + 2
Item Load (0.3ms)  SELECT "items".* FROM "items" LIMIT 1
=> true 
项目模型:

... 
#  load_date       :date
...

class Item < ActiveRecord::Base
attr_accessible :bt_num, :dept, :formula, :item_code, :load_date, :prod_comments, :qc_comments, :qc_tech, :qty_in_kg, :qty_in_liters, :rm_ok_by, :series, :status, :time_to_produce, :vat
...
。。。
#加载日期:日期
...
类项
试试这些

Item.where(:load_date => (Date.today + 2).strftime)
  or 
Item.where("Date(load_date) =?", (Date.today + 2).strftime)

数据库中加载日期的值是多少?您的数据库是什么?我已经在mysql上进行了测试,它可以正常工作。数据库是sqlite3。Item.first.load_date==Fri,24,May 2013,类为'date'可能有帮助它不是数据库,我已经在Postgres、Mysql和Sqlite上测试过了,它工作得很好。也许它和时区有关?尝试
Item.where(:load\u date=>date.today+1)
Item.where(:load\u date=>date.today+3)
并检查第二个是否仍然有效,但第一个是否有效(第一个仍然返回空白)。为什么日期的格式很重要??为什么第一个工作不呢?load_date是datetime列,但我们只需要date,所以我使用date(load_date)。。。。之所以使用strftime,是因为它将(Date.today+2)转换为格式“2013-05-24”,并且数据库中的值保存为“2013-05-24 12:12”而不是“fridat May 24,2013”,为什么Item.first.load\u Date不显示“2013-05-24 12:12”而不是“Fri,May 24,2013”?当我检查Item.first.load\u date的类别时,它也是“date”。我很感激你的帮助,我只是想了解发生了什么。然后试试这个。。。其中(“加载日期=?”,(date.today+2).strftime)