无法在另一个 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
。
我在我的 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
。