我有一个得票多的候选人。
我想得到本月产生的候选人的选票?

@candidate.votes.from_this_month

scope :from_this_month, where("created_at > ? AND created_at < ?", Time.now.beginning_of_month, Time.now.end_of_month)

这给了我一个pg错误:
pg::错误:错误:列引用“created_at”不明确
如果我尝试
scope :from_this_month, where("vote.created_at > ? AND vote.created_at < ?", Time.now.beginning_of_month, Time.now.end_of_month)

我得到以下错误
PG::Error: ERROR:  missing FROM-clause entry for table "vote"

最佳答案

你也需要把那个地方围在一个林达里。

scope :from_this_month, lambda { where("votes.created_at > ? AND votes.created_at < ?", Time.now.beginning_of_month, Time.now.end_of_month) }

否则,它可能会工作,您的测试将全部通过,但如果您的应用程序运行超过一个月,您将开始得到不正确的结果,因为time.now是在加载类时计算的,而不是在调用方法时计算的。

08-25 19:15
查看更多