Rails.where大于/小于没有编写SQL语句

时间:2014-09-15 08:20:44

标签: ruby-on-rails ruby activerecord ruby-on-rails-4

所以我有数据库查询

ageVariable = 36
Actor.where("age > ?", ageVariable)

是否可以避免?语法?

我正在寻找基于:key的解决方案,看起来像这样:

Actor.where(age: greater_than(age_variable)...where(age: > age_variable)

编辑:

回应@bounty回答: 范围并不能解决问题。

Actor.where(:created_at => (1000000.years.ago..2.days.ago)听起来很糟糕

3 个答案:

答案 0 :(得分:4)

您可以使用Arel在不使用原始SQL的情况下完成此任务:

Actor.where(Actor.arel_table[:age].gt(36)).all

答案 1 :(得分:0)

您可以使用范围条件。

ageVariable = (36..1000)
Actor.where(:age => ageVariable)

这将给出36-1001之间的所有演员

答案 2 :(得分:0)

ageVariable = 36
Actor.where("age > :target_age", target_age: ageVariable)

我避免使用?并使其看起来像后者...where(age: > age_variable) ...我甚至没有使用between而是greater than。我是否更接近你的想法?