我的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
为什么会发生这种情况?我该如何解决这个问题?我在其他任何课程中运行其他课程都没有其他问题(如果有意义的话)。
答案 0 :(得分:1)
问题是你没有调用常量MarketingEmailDecider
,而是试图执行一个方法:MarketingEmailDecider(user)
。我相信你想:MarketingEmailDecider.new(user).deliver
。
顺便说一句,红宝石中的initialize
,而不是init
。