0

我在 Rails 中有一个表,我想查找某个函数返回 true 的表的所有记录。

做这个的最好方式是什么?我当然可以遍历表中的所有记录并使用条件语句来测试给定单个记录的函数是否返回 true 并将其添加到列表中。

有没有更简单的方法可以按照 Model.find(:all, :conditions => {...}) 的方式来做这件事?

谢谢

4

2 回答 2

1
Class MyModel < ActiveRecord
    def self.targetted
       find_each.select(&:predicate_method?)
    end

    def predicate_method?
        #something that returns either true or false
    end
end

这更像是 Rails 惯用语:

  • find_each 将分批获取您的记录 1000. 它比所有的记忆都好
  • &:predicate_method :将符号转换为 Proc(使用 # 运算符)实际上会使您的代码在每个传递的对象上调用该方法
于 2012-06-30T18:44:53.390 回答
0
def record_that_returns_true_for_xfunction
  Model.all.select {|record| xfunction(record.some_column) == true}
end

这似乎是您正在寻找的东西。此方法将返回包含所有记录的数组xfunction(record.some_column) == true

于 2012-06-30T18:17:17.827 回答