Ruby on rails 如何使用符号查询比较运算符

Ruby on rails 如何使用符号查询比较运算符,ruby-on-rails,postgresql,activerecord,ruby-on-rails-6,Ruby On Rails,Postgresql,Activerecord,Ruby On Rails 6,我现在可以这样做 Enrollment.where('starts_at < ?', Time.current) 有没有办法对比较运算符使用相同的格式?我原以为其中一个会管用,但事实并非如此 Enrollment.where(starts_at: "< #{Time.current}") 或 能做这样的事情真的很棒 Enrollment.where(state: :active, 'starts_at <': Time.current) Rails没有

我现在可以这样做

Enrollment.where('starts_at < ?', Time.current)
有没有办法对比较运算符使用相同的格式?我原以为其中一个会管用,但事实并非如此

Enrollment.where(starts_at: "< #{Time.current}")

能做这样的事情真的很棒

Enrollment.where(state: :active, 'starts_at <': Time.current)

Rails没有内置的方法*来使用哈希语法创建小于/大于条件。您可以使用无限范围创建大于或等于:

adults = Citizen.where(age: 18..)
minors = Citizen.where(age: ..17)
从开始,您可以使用beginless范围创建小于或等于:

adults = Citizen.where(age: 18..)
minors = Citizen.where(age: ..17)
但是,如果您需要LT而不是LTE,那么创建所需查询实际上非常简单:

Enrollment.where(state: :active)
          .where('starts_at < ?', Time.current)

*在撰写本文时,请参见@Yakov对建议功能的回答

此功能可能在Rails 6.1中提供

Enrollment.where('starts_at <': Time.current)
它仍在讨论:


您不能使用注册。从哪里开始?状态=?',Time.current,'active'或如果active是整数,则为数字?是的,我可以。我只是想知道是否有可能使用符号的新格式。此查询似乎适用于注册。wherestate::active,在:…Time.current开始\u续集类似于此注册。其中{在Enrollment.where('starts_at <': Time.current)