我正在尝试在ActiveRecord :: Relation上应用过滤器。我想申请一个' where'用于进行以下调用的子句(或等效物)。
record = Record.all
record.where(record.remaing_units > 5)
我知道这很容易编写一个函数并传递2个参数但我想知道是否有更简洁的方法来做,更多'其中'等。
编辑:remaining_units是记录类计算2个字段之间减法的方法。
答案 0 :(得分:4)
您不能将方法用作mysql查询。
您可以运行与sql方法相同的功能:
Record.where('a + b > 5')
或者从db获取所有记录并使用ruby select
方法:
Record.all.select{ |r| r. remaing_units > 5 }
**您可以尝试Squeel gem以获得更好的查询
答案 1 :(得分:1)
class Record < ActiveRecord::Base
scope :remaining_space, ->(n) {
where("records.field_1 - records.field_2 > ?", n)
}
end
Record.remaining_space(5)