2011-08-25 6 views
0

ユーザモデルがあります。私はコメントモデルを持っています。ここに彼らの関係があります:Rails:最終日のユーザコメントの選択

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

私は過去1日の間、すべての返信をプリントアウトしようとしています。この方法:

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_atcomments.created_atと交換する必要があります。生成されたクエリでわかるように、commentsitemsの2つのテーブルが結合されています。これらのテーブルの両方に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

それはうまくいった!ありがとう!ニースの解決策。 –