2016-09-23 27 views
2

我寫了一個非常強大的遷移,它需要運行多個集合,然後執行一個find_or_intialize_by我在單個事務中執行此操作,並且需要80多秒才能運行查詢。我想現在嘗試使用find_each來加快速度。Rails未知鍵::條件。有效的密鑰是::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_eachthis tutorial around看,我把它從一個哈希參數,允許您指定要查詢的條件,我想利用在運行find_each之前過濾結果。

我們使用的是Rails 4.1.14.2ruby 2.3.0p0,現在已經棄用這個選項了嗎?或者我做錯了什麼?

回答

3

您提供的鏈接適用於Rails 2.3.8
您可以看到此消息find_each已被棄用。
enter image description here 您應該使用this鏈接。
正如你所看到的,沒有conditions這個關鍵就是你得到錯誤的原因。

3

您可以使用它像這樣

StudentApplication.where(force_review: true).find_each do |app| 
    .... 
end 
相關問題