在Rails控制台中按日期查找记录

时间:2011-08-23 14:28:32

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

这是在Sqlite上发生的。我可能错过了一些东西,但我无法弄清楚到底是什么。

控制台输出

>> date = Task.first.date
=> Tue, 16 Aug 2011
>> Task.find(:all, :conditions => {:date => date})
=> []
>> Task.find(:all, :conditions => ['date = ?', date])
=> []
>> Task.find(:all, :conditions => ['date IS ?', date])
=> []

模式

create_table "tasks", :force => true do |t|
  t.date     "date"
end

2 个答案:

答案 0 :(得分:2)

这不是一个完整的答案,但希望能让您放心,您的语法正确

我敲了一个快速的应用程序来测试这个和你的所有检索工作方法。这也是一个SQLite数据库,没有错误。

t = Task.create
 => #<Task id: 1, date: nil, created_at: "2011-08-23 14:32:27", updated_at: "2011-08-23 14:32:27"> 

t.date = "Tue, 16 Aug 2011"
 => "Tue, 16 Aug 2011" 

t.save

date = Task.last.date
 => Tue, 16 Aug 2011 

Task.find(:all, :conditions => {:date => date})
 => [#<Task id: 1, date: "2011-08-16">] 

Task.find(:all, :conditions => ['date = ?', date])
 => [#<Task id: 1, date: "2011-08-16">] 

Task.find(:all, :conditions => ['date IS ?', date])
 => [#<Task id: 1, date: "2011-08-16">] 

我的schema.rb:

create_table "tasks", :force => true do |t|
  t.date "date"
end

答案 1 :(得分:2)

即使我在我的本地数据库中尝试过,一切似乎都运行正常。

to_sql方法将返回rails生成的查询。 这可能有助于您调试问题:

Task.where(:date => date).to_sql