2016-09-25 69 views
0

我想从查询mongoid中将值分配给变量,只要计数优于特定值。检查并分配给变量而不执行两次ruby

,如果我做

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

查询被执行了两次,我该怎么做检查,并与一个查询分配?

回答

0

你必须从Mongoid中检索数据来做比较。

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

谢谢,但我已经有很多查询像这样做,这是一种不可读的我认为也许有直接做这个ruby方法,或者可能做一个方法? – Bowtch

+0

如果你有很多这样的查询,那么把逻辑分成独立的方法。 'mdl = search_by_params(params,limit)' –

+0

是的,这是我写的方法,但如果最具体的查询没有返回足够的结果,我想得到结果^^也许我会问不同的问题,我没有已经足够具体在这一个谢谢你的时间;) – Bowtch

1

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

通用的解决方案:

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

如果md1mutatable对象上午实例,来响应replace(如Hash):

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