Rails模型类的作用域子句中的多个过滤条件

时间:2018-10-17 10:53:16

标签: ruby-on-rails scope model

我需要在Ruby on Rails代码的模型类的scope子句中提供2个过滤条件。

我尝试过:

scope :post_total, -> {where(division: 'PMT', 'key between ? and ?, 3, 7)}

除法和键是我需要进行过滤的2列名称。

因此,我需要基本实现此条件:

WHERE DIVISION = 'PMT' AND KEY BETWEEN 3 AND 7

我在上面显示的Rails范围条件中遇到错误。编写此范围条件的正确方法是什么?

请帮助!

3 个答案:

答案 0 :(得分:1)

这应该做

scope :post_total, -> {where("division = ? AND key BETWEEN ? AND ?", 'PMT', 3,7)}

答案 1 :(得分:1)

您可以链接where子句以使用Rails语法和直接SQL:

scope :post_total, -> { where(division: 'PMT').where('key BETWEEN ? AND ?', 3, 7) }

Rails会将其作为一个查询执行,并以所需的方式进行组织。

希望有帮助-如果您有任何疑问,请告诉我。

答案 2 :(得分:1)

我会这样:

scope :post_total, -> { where division: 'PMT', key: 3..7 }