【问题标题】:undefined method `find_each' for Thor::Group:ClassThor::Group:Class 的未定义方法“find_each”
【发布时间】:2023-03-05 04:12:02
【问题描述】:

我编写了一个 Thor 任务,它应该遍历所有使用 find_each 的用户。但我收到此错误消息: Thor::Group:Class 的未定义方法find_each`

为什么 find_each 在这里不可用?在 Rails 控制台中运行 User.find_each { |u| puts u.name } 有效。

class CloudImages < Thor
  require "./config/environment.rb"

  desc "save_user_avatar_urls", "Save existing AWS user avatars"
  def save_user_avatar_urls
    User.find_each do |user|
      next if user.avatar_url.blank?

      path      = URI(user.avatar_url).path
      image_url = $DOMAIN + path

      user.update_attribute(:aws_avatar_url, image_url)
    end
  end

end

【问题讨论】:

  • 试试::User.find_each do |user|
  • 成功了!谢谢!将其发布为答案,以便我可以接受它是正确的。 ;-)
  • 为什么我们必须在这里使用基本命名空间,还有没有办法将 Thor 配置为不需要它?

标签: ruby-on-rails thor


【解决方案1】:

User 更改为::User

class CloudImages < Thor
  require "./config/environment.rb"

  desc "save_user_avatar_urls", "Save existing AWS user avatars"
  def save_user_avatar_urls
    ::User.find_each do |user|
      next if user.avatar_url.blank?

      # ...
    end
  end
end

【讨论】:

  • 为什么我们必须在这里使用基本命名空间,并且无论如何配置 Thor 不需要它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 2013-06-11
  • 2010-12-30
  • 2019-12-25
相关资源
最近更新 更多