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

时间:2015-07-23 23:27:31

标签: ruby-on-rails ruby ruby-on-rails-3 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

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

1 个答案:

答案 0 :(得分:1)

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

顺便说一句,红宝石中的initialize,而不是init