Rails:将函数应用于表中的每条记录?

时间:2012-06-30 16:32:22

标签: ruby-on-rails ruby-on-rails-3 orm ruby-on-rails-3.1

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

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

是否有更简单的方法可以按照Model.find(:all,:conditions => {...})的方式执行此操作?

由于

2 个答案:

答案 0 :(得分: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个批次获取您的记录。它比您的记忆更好
  • &amp;:predicate_method:将符号转换为Proc(使用#运算符)实际上会使代码在每个传递的对象上调用方法

答案 1 :(得分:0)

def record_that_returns_true_for_xfunction
  Model.all.select {|record| xfunction(record.some_column) == true}
end

这似乎就是你要找的东西。此方法将返回xfunction(record.some_column) == true

所有记录的数组