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")