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

时间:2015-07-17 13:13:13

标签: ruby-on-rails-4 rake-task

我正在执行rake任务,并在创建最后一个产品时停止使用byebug。

然后我在rake task buebug和rails console的输出之间出现了奇怪的差异。

Product.count 可在控制台和byebug中使用,但 Product.find_by_id 仅适用于控制台。在rake任务中,它返回 nil

到目前为止,我将find_by_ *方法替换为where,以便验证将通过,rake任务将完成其工作。

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

以前有人遇到过这样的问题吗?任何想法如何进一步发展?

1 个答案:

答案 0 :(得分:2)

  

除了find_by _...和find_by _...之外的所有动态方法!不推荐使用。

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

  • find_by ...和find_by ......!或
  • where(...)。to_a返回一个数组或where(...)。last返回一个对象

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

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