Rails:使用大于/小于where语句
我试图find一个id大于200的所有用户,但我有一些特定的语法麻烦。
User.where(:id > 200)
和
User.where("? > 200", :id)
都失败了。
有什么build议么?
尝试这个
User.where("id > ?", 200)
我只在Rails 4中testing过这个,但是有一个有趣的方法来使用范围和where
hash来获得这个行为。
User.where(id: 201..Float::INFINITY)
会生成SQL
SELECT `users`.* FROM `users` WHERE (`users`.`id` >= 201)
用-Float::INFINITY
可以做到这一点。
我刚刚发布了一个类似的问题,询问如何在SO上使用date。
更好的用法是在用户模型where(arel_table[:id].gt(id))
创build一个范围, where(arel_table[:id].gt(id))
如果你想要一个更直观的写法,它存在一个名为squeel的gem,它可以让你写下你的指令:
User.where{id > 200}
注意“大括号”字符和id
只是一个文本。
你所要做的就是在你的Gemfile中添加squeel:
gem "squeel"
在Ruby中编写复杂的SQL语句时,这可能会大大减轻您的工作量。
短:
User.where("id > 200")