检查并分配给变量而不执行两次ruby

时间:2016-09-25 14:27:25

标签: ruby mongoid

我想只在计数高于某个值时才将查询mongoid中的值赋给变量。

如果我这样做

mdl = Mdl.by_params(params) unless Mdl.by_params(params) < limit

查询执行两次,如何检查并分配一个查询?

2 个答案:

答案 0 :(得分:1)

可能的解决方案取决于md1数据的类型。

通用解决方案:

((mdl = Mdl.by_params(params)) < limit) && md1 = nil

如果md1 mutatable 对象的实例,则会响应replace(例如Hash):

Mdl.by_params(params).tap do |md| 
  md1.replace(md) unless CONDITION # md[:limit] < limit
end

答案 1 :(得分:0)

您必须从Mongoid检索数据才能进行比较。

mdl_temp = Mdl.by_params(params)
mdl = mdl_temp unless mdl_temp < limit