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 に答える