仅当属性劣于ActiveRecord时才进行ActiveRecord查询

时间:2019-03-14 15:09:22

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

我有当前查询:

@meals = Meal.where(week_day: 1, vacation_mode: false).order('random()')

Meal还有另外两个属性:max_daily_orderstoday_orders。两者都是整数。

我想执行与上述相同的查询,但仅在today_orders严格低于max_daily_orders的情况下进餐

例如:

  • 如果膳食“汉堡”的today_orders等于6,并且 max_daily_orders等于6,查询不应该使用它。
  • 而“炸薯条”餐的today_orders等于2, max_daily_orders等于8,因此应由查询使用

如何改善查询,以便比较两个属性?

1 个答案:

答案 0 :(得分:1)

您只可以在where内输入一串查询内容,我通常使用这种方法,因为它使我感觉就像在编写普通SQL。

这应该对您有用:

@meals = Meal.where("week_day = 1 
                 AND vacation_mode = false
                 AND today_orders < max_daily_orders")