繁体   English   中英

使用函数的ActiveRecord'where'子句

[英]ActiveRecord 'where' clause using function

我正在尝试在ActiveRecord :: Relation上应用过滤器。 我想应用“ where”子句(或等效子句)进行以下调用。

record = Record.all
record.where(record.remaing_units > 5)

我知道对函数进行编码并将其传递2个参数很容易,但是我想知道是否有更干净的方法可以做到,更像是“哪里”。

编辑:remaining_units是Record类计算2个字段之间相减的一种方法。

您不能将方法用作mysql查询。

您可以运行与sql方法相同的功能:

Record.where('a + b > 5')

或者从数据库获取所有记录,并使用ruby select方法:

Record.all.select{ |r| r. remaing_units > 5 }

**您可以尝试Squeel gem以获得更好的查询

class Record < ActiveRecord::Base
  scope :remaining_space, ->(n) {
    where("records.field_1 - records.field_2 > ?", n)
  }
end

Record.remaining_space(5)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM