2011-08-25 48 views
0

我有用戶模型。我有評論模型。這是他們的關係:Rails:選擇最後一天的用戶評論

User.rb: 
    has_many :replies, :through => :items, :source => :comments 

我想打印出用戶過去一天的所有回覆。通過這種方式:

user.replies.find(:all, :conditions => [" created_at between ? AND ?", Time.zone.now.beginning_of_day, Time.zone.now.end_of_day]) 

這裏是我得到的問題:

ruby-1.9.2-p180 :038 > bob.replies.all(:conditions => [" created_at between ? AND ?", Time.zone.now.beginning_of_day, Time.zone.now.end_of_day]) ActiveRecord::StatementInvalid: Mysql::Error: Column 'created_at' in where clause is ambiguous: SELECT comments .* FROM comments INNER JOIN items ON comments .item_id = items .id WHERE ((items .user_id = 16)) AND (created_at between '2011-08-25 00:00:00' AND '2011-08-25 23:59:59')

看來這個問題是因爲我的網友 - 評關係。但我真的不知道發生了什麼,以及如何解決這個問題。幫助表示讚賞。

回答

2

您需要在您的條件下將created_at替換爲comments.created_at。正如您在生成的查詢中看到的那樣,有兩個表加入:commentsitems,它們都有created_at。所以你的數據庫有點困惑,這是你創建的。

+0

謝謝!就是這樣! –

0

rubish是對的;但您也可以將其重寫爲:

User.replies.find(:all, :conditions => {:created_at => Time.zone.now.beginning_of_day..Time.zone.now.end_of_day}) 
+0

這也工作!謝謝!好的解決方案 –