如何解决这部电影是在今天的同一天创建的,但在 X 年前
我使用这个系统来创建一个电影列表,比如日/月,但不是今天(=今年)。
scope :anniversary,-> {
where(
'DATE(created_at) = ?',(1..9).collect{|year| year.years.ago.to_date}
)
}
但是我有这个错误
PG:数据类型不匹配:错误:WHERE 的参数必须是布尔类型,而不是记录类型 第 1 行:选择“电影”。 从“电影”WHERE (DATE(created_at) = '20... : SELECT "movies". FROM "movies" WHERE (DATE(created_at) = '2020-02-13','2019-02-13','2018-02-13') ORDER BY random()限额 1 美元**
知道如何修复吗?
我可以编辑这部分 (1..9).collect
以排除当前年份吗? (不要每年更新脚本)
解决方法
有一个简单的解决方法。如果您想添加一个 where 语句,其中的内容是 this or that or that,那么您可以将 this or that or that 放在一个数组中并更改 = ?
到IN (?)
。在您的示例中,这看起来像:
where('DATE(created_at) IN (?)',(1..9).collect{|year| year.years.ago.to_date}
,
如果您使用的是 Postgres 数据库,请尝试使用此查询
Modal.where('extract(year from created_at) <> ? AND extract(month from created_at) = ? AND extract(day from created_at) = ?',Time.current.year,Time.current.month,Time.current.day)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。