Rails:选择最后一天的用户评论

时间:2011-08-25 16:51:00

标签: mysql ruby-on-rails ruby activerecord

我有用户模型。我有评论模型。这是他们的关系:

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。* 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'和'2011-08-25 23:59:59')

似乎问题是因为我的用户 - 评论关系。但我真的不知道发生了什么以及如何解决这个问题。感谢帮助。

2 个答案:

答案 0 :(得分:2)

您需要在条件中将created_at替换为comments.created_at。正如您在生成的查询中所看到的,有两个表已加入:commentsitems,它们都有created_at。所以你的数据库有点困惑,这是你在谈论的。

答案 1 :(得分:0)

rubish是对的;但是你也可以改写它:

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