无法在另一个 class 中调用 class 方法

Can't call class method within another class

我在我的 lib 文件夹中找到了两个 类。这两个文件都位于 lib/services 文件夹中。我在初始化程序中通过此方法加载文件。

['account_helpers', 'facades', 'decorators', 'presenters', 'serializers', 'services', 'views', 'queries'].each do |folder|
  Dir["#{Rails.root}/lib/#{folder}/*.rb"].each {|file| load file}
end

我的两个 类 看起来是这样...

class MarketingEmail
  def self.send
    User.where('created_at >= ?', 15.days.ago).each do |user|
      MarketingEmailDecider(user).deliver
    end
  end
end

class MarketingEmailDecider < MarketingEmail
  def init(user)
    @user = user
  end

  def deliver
    puts "delivered"
  end
end

每当我 运行 代码时,我都会收到以下错误

 NoMethodError:
   undefined method `MarketingEmailDecider' for MarketingEmail:Class

为什么会发生这种情况,我该如何解决?在我的任何其他 类 中 运行ning other 类 没有其他问题(如果这有意义的话)。

问题是您没有调用常量 MarketingEmailDecider,而是试图执行一个方法:MarketingEmailDecider(user)。我相信你想要:MarketingEmailDecider.new(user).deliver.

顺便说一句,在 ruby 中是 initialize,而不是 init