J'ai écrit une migration assez costaude. Elle doit parcourir plusieurs collections, puis faire un find_or_intialize_by
Je le fais en une seule transaction et cela prend plus de 80 secondes pour exécuter la requête . Je veux maintenant essayer d'accélérer cela en utilisant find_each
.Rails Clé inconnue:: conditions. Les clés valides sont les suivantes:: start,: batch_size
ActiveRecord::Base.transaction do
StudentApplication.find_each(:conditions => "force_review is true") do |app|
....
end
end
Je reçois les éléments suivants:
== 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
En regardant this tutorial around en utilisant find_each
, je vois qu'il faut un argument de hachage qui vous permet de spécifier une condition à la requête, je voulais profiter de que pour filtrer les résultats avant d'exécuter le find_each
.
nous utilisons Rails 4.1.14.2
et ruby 2.3.0p0
, cette option a-t-elle été abandonnée? Ou est-ce que je fais quelque chose de mal?