Rails 4 - find_by_* 在 rake 任务中不起作用

Rails 4 - find_by_* does not work in a rake task

我是 运行 抽佣任务,在创建最后一个产品时遇到了 byebug。

然后我在 rake 任务 buebug 和 rails 控制台中的输出之间出现奇怪的差异。

Product.count 在控制台和 byebug 中都有效,但 Product.find_by_id 仅在控制台中有效。在 rake 任务中 returns nil.

到目前为止,我用 where 替换了 find_by_* 方法,这样验证就会通过,rake 任务就会完成它的工作。

谷歌搜索没有帮助。这很奇怪,因为我们在很少的地方使用 find_by_*。发现你在 rake 任务中的验证不可靠至少可以说有点令人担忧。

有没有人遇到过这样的问题?对如何进一步进行有任何想法吗?

All dynamic methods except for find_by_... and find_by_...! are deprecated.

所有具有 xxx_by_ 的方法现在都是 xxx_by(删除结束方法上的下划线)。所以,你可以使用:

  • find_by... 和 find_by...!或
  • where(...).to_a return 一个数组或 where(...).last 到 return 一个对象

请注意 where(...) return 是一个关系,而不是一个数组。

http://guides.rubyonrails.org/upgrading_ruby_on_rails.html