我最近发现了一个巧妙的技巧来替换 Rails 中的大于/小于,where
其中您可以使用范围来替换 where 的字符串版本:
Post.where('id <= ?', 10)
可以替换为:
Post.where(id: ..10)
三个点将其从 更改<=
为<
Post.where('id < ?', 10)
可以替换为:
Post.where(id: ...10)
这个技巧似乎适用于:
<=
<
>=
然而,它不适用于大于,>
因为:
Post.where(id: 10..)
并且Post.where(id: 10...)
都会搜索大于或等于。
我的问题是,有没有办法让它工作得比(除了用 破解它+ 1
?):
Post.where(id: (10+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" < …
Run Code Online (Sandbox Code Playgroud)