2016-09-23 6 views
2

私は非常に強く、いくつかのコレクションを実行してから、find_or_intialize_byを実行する必要があります。これを1回のトランザクションで実行しています。クエリを実行するのに80秒以上かかる。私は今、find_eachを使ってこれをスピードアップしようとします。Rails Unknownキー::条件。有効なキーは次のとおりです::start、:batch_size

ActiveRecord::Base.transaction do 
    StudentApplication.find_each(:conditions => "force_review is true") do |app| 
    .... 
    end 
end 

私は次のようになっています:

== 20160920133013 MoveForceReviewFieldsToCcSubmission: migrating ============== 
rake aborted! 
StandardError: An error has occurred, this and all later migrations canceled: 

Unknown key: :conditions. Valid keys are: :start, :batch_size/Users/Nexus/Work/prodigy/db/migrate/20160920133013_move_force_review_fields_to_cc_submission.rb:4:in `block in change' 
/Users/Nexus/Work/prodigy/db/migrate/20160920133013_move_force_review_fields_to_cc_submission.rb:3:in `change' 
/Users/Nexus/.rbenv/versions/2.3.0/bin/bundle:23:in `load' 
/Users/Nexus/.rbenv/versions/2.3.0/bin/bundle:23:in `<main>' 
ArgumentError: Unknown key: :conditions. Valid keys are: :start, :batch_size 

find_eachを使用してthis tutorial aroundを見て、私はそれはあなたがクエリに条件を指定することを可能にするハッシュ引数を取る見て、私はの利点を活用したいですfind_eachを実行する前に結果をフィルタリングする必要があります。

Rails 4.1.14.2ruby 2.3.0p0を使用していますが、現在このオプションは廃止されていますか?または私は何か間違っているのですか?

答えて

3

あなたが提供するリンクは、2.3.8です。
このfind_eachは推奨されていませんというメッセージが表示されます。
enter image description here あなたはthisリンクを使用する必要があります。
ご覧のとおり、conditionsキーがないため、エラーが発生しています。

3

あなたはこの

StudentApplication.where(force_review: true).find_each do |app| 
    .... 
end 
のようにそれを使用することができます
関連する問題