Rails未知密钥::条件。有效密钥为:: start,:batch_size

时间:2016-09-23 07:54:21

标签: ruby-on-rails rails-migrations

我编写了一个非常强大的迁移,它需要运行多个集合,然后执行find_or_intialize_by我在一个事务中执行此操作,并且运行查询需要80秒以上。我现在想尝试使用find_each来加快速度。

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,我看到它需要一个哈希参数,允许您为查询指定条件,我想利用它来运行{之前过滤结果} {1}}。

我们正在使用find_eachRails 4.1.14.2,现在是否已弃用此选项?或者我做错了什么?

2 个答案:

答案 0 :(得分:3)

您提供的链接适用于Rails 2.3.8 您可以看到已弃用此find_each的消息 enter image description here 您应该使用this链接 正如您所看到的,没有conditions密钥就是您收到错误的原因。

答案 1 :(得分:3)

您可以像这样使用

StudentApplication.where(force_review: true).find_each do |app|
  ....
end