尝试搜索上映日期大于今天日期的电影
Movie.where('release > ?', Date.today)
ActiveRecord::StatementInvalid: Mysql::ParseError: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'release > '2011-09-25')' at line 1: SELECT `movies`.* FROM `movies` WHERE (release > '2011-09-25')
Movie.where('release > ?', DateTime.now)
Movie.where(['release > ?', DateTime.now])
在最新版本的 Rails 中,您可以执行以下操作:
User.where(created_at: 3.days.ago..Time.now)
请参阅此处的其他一些示例:https://stackoverflow.com/a/24150094
在 Ruby 2.7 中,你可以尝试这个:
License.where(expiration: Time.zone.today..)
SELECT "licenses".* FROM "licenses" WHERE "licenses"."expiration" >= '2021-07-06 15:12:05'
Ruby beginless/endless 范围也可以用作开箱即用的解决方案:
Post.where(id: 1..)
=>
Post Load (0.4ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" >= $1 [["id", 1]]
Post.where(id: ..9)
=>
Post Load (0.3ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" <= $1 [["id", 9]]
Post.where(id: ...9)
=>
Post Load (0.3ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" < $1 [["id", 9]]
将
id
替换为您的日期列 release
将值替换为
Date.today
Movie.where(release: 3.days.ago..)