我有用户模型。我有评论模型。这是他们的关系:
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 之间? AND?“,Time.zone.now.beginning_of_day, Time.zone.now.end_of_day])ActiveRecord :: StatementInvalid: Mysql :: Error:where子句中的'created_at'列是不明确的:SELECT
comments
。* FROMcomments
INNER JOINitems
ONcomments
。item_id =items
。id WHERE((items
。user_id = 16))AND(created_at between '2011-08-25 00:00:00'和'2011-08-25 23:59:59')
似乎问题是因为我的用户 - 评论关系。但我真的不知道发生了什么以及如何解决这个问题。感谢帮助。
答案 0 :(得分:2)
您需要在条件中将created_at
替换为comments.created_at
。正如您在生成的查询中所看到的,有两个表已加入:comments
和items
,它们都有created_at
。所以你的数据库有点困惑,这是你在谈论的。
答案 1 :(得分:0)
rubish是对的;但是你也可以改写它:
User.replies.find(:all, :conditions => {:created_at => Time.zone.now.beginning_of_day..Time.zone.now.end_of_day})