RoR - 按方法结果过滤模型

时间:2015-07-10 19:49:16

标签: ruby-on-rails ruby

我的模型上有一个方法,Case名为stats,它计算并返回带有关于模型的统计信息的哈希值。如何根据该方法的结果进行过滤? (例如,如果我想查看所有案例的胜率超过50的所有结果)

我在网上找到的范围内的所有内容都与模型的不同属性进行过滤有关

2 个答案:

答案 0 :(得分:0)

in this case you can use the select method.

Case.select{|c| c.stats[:win_percentage] > 50 }

if stats is instance method

答案 1 :(得分:0)

我假设您正在处理ActiveRecord模型。 如果win_percentage是一个列,看起来就是这样,你可以这样做:

Case.where("win_percentage > 50")

这比仅使用select方法更有效率,因为让DB进行过滤。

但是如果你需要过滤一个不能表示为where条件的方法(即不能由DB执行),那么是的,你需要求助于.select {}做法。 (在这种情况下,如果你有很多结果,你可能想使用.find_in_batches())。