2013-10-03 17 views
0

由于某种原因,我的@sub_opps导致: ActiveRecord :: Relation :: ActiveRecord_Relation_SubOpp。试图从今日日期的数据库中抓取行

这意味着我的.each语句显然不产生任何结果。我已经尝试了多种方法,但无法找到正确的调整来完成这项工作。

任何想法为什么?

def index 
    @sub_opps = SubOpp.where("status = ? AND sub_time = ?", false, Date.today) 
end 

为了澄清一些事情,sub_time是我的SubOpp模型​​中的一个列,并且是datetime。状态是布尔值。所以,我试图显示状态为false且日期时间为今天的SubOpp行。

这是我的看法。

<% @sub_opps.each do |sub_opp| %> 
    <%= render sub_opp, :sub_opp => :sub_opp %> 
<% end %> 

感谢

+0

对不起 - 查看更新后的帖子。我根据下面的答案之一改变了它,并错过了。 – brad

+0

只需检查:数据库中“sub_time”的数据类型是什么?如果在查询中单独运行这些条件中的一个,会得到什么结果? – lurker

+0

sub_time是数据库中的'datetime'。我相信这是问题。当我测试并使sub_opps只是值为假我得到的结果。当我测试并使sub_opps只是今天的日期值,我遇到了我遇到的问题。我确实有数据库中有这两个条件的行,所以它应该显示结果。 – brad

回答

0

我想通了这个问题。问题是模型中的日期时间列既包含日期又包含时间,因此尝试从这个模型中查询行日期时间等于今天日期的行不起作用。为了解决这个问题,我在控制器中做了以下工作。

@sub_opps = SubOpp.where('sub_time BETWEEN ? AND ?', DateTime.now.beginning_of_day, DateTime.now.end_of_day).all 

这抓住了所有的SubOpp的时间之间的一天的开始和结束。同样,潜在的问题是日期时间是日期和时间,所以仅仅比较日期并没有产生任何结果。感谢所有的帮助!

+0

很高兴你知道了。这就说得通了。 – lurker

0

我觉得你的where语法是关闭...试试这个:

@sub_opps = SubOpp.where("status = ? AND sub_time = ?", false, Date.today) 
+0

仍然是相同的,虽然我更新了我的代码上面是SQL – brad

相关问题