在范围内使用lambda来返回记录

时间:2018-06-12 12:56:09

标签: ruby-on-rails lambda scope

我有以下范围来返回具有余额的客户。余额不是字段,而是Client模型上的函数。

def balance
    purch = self.purchases.map(&:total).sum
    pay = self.payments.sum(:amount)
    return purch - pay
end

scope :with_balance, -> { lambda {|client| { conditions: client.balance > 0}}}

这样做的结果是#<Proc:>元素,但我不知道如何从中获取客户端,或者这种方法是完全错误的。

1 个答案:

答案 0 :(得分:0)


嗨,杰里米!

scope :with_balance, -> { lambda {|client| { conditions: client.balance > 0}}}

“条件”没有选项,所以我认为使用“选择”是过滤具有正余额的客户的合理解决方案。

我的解决方案:

scope :with_balance, (lambda do
  select {|client| client.balance > 0}
end)

快乐编码:)