我有一个得票多的候选人。
我想得到本月产生的候选人的选票?
@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是在加载类时计算的,而不是在调用方法时计算的。