2013-10-03 45 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

相關問題