ruby-on-rails - 如何获取当月创建的记录?

标签 ruby-on-rails ruby postgresql

我有一个候选人 has_many 选票。

我正在尝试获取当月创建的候选人的选票?

@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)}

这是因为在 rails 中模型名称是单数的(即 Vote)并且创建的表是纯的(例如 votes)通过对流

编辑

这可以用 lambda {where(created_at: Time.now.beginning_of_month..(Time.now.end_of_month))} 写得更简单,由于在中给出的原因,我们需要使用 lambda下面的评论。

感谢 BroiSatse 的提醒 :D

关于ruby-on-rails - 如何获取当月创建的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22423079/

相关文章:

ruby-on-rails - 让 Byebug 在不退出 Pry 的情况下完成执行

ruby-on-rails - 将 .js Controller 请求渲染为 html

ruby-on-rails - Rails 中授权的功能测试

ruby - 如何在 Ruby 中编码 lambda (Proc)?

sql - postgresql 查询以选择表中不存在于另一个表的链接中的行

python - BlazeDS Livecycle Data Services 有什么作用,而 PyAMF 或 RubyAMF 之类的东西不能做什么?

ruby - 为什么单个空数组的并行赋值会分配多个nil?

ruby-on-rails - "Class#message"和 "Class.message"符号之间的区别

java - 由于@OneToMany,JPA 更新记录失败

ruby-on-rails - 如何在 Rails 5 中添加对表的非主键列的引用