Rails - 'uninitialized constant' 在 ActionMailer 拦截器中使用模型时
Rails - 'uninitialized constant' when using a model in ActionMailer interceptor
我正在编写一个小机制来处理电子邮件退回和投诉。
我基本上遵循 blog post 解释如何实现这种机制。
我正在创建并注册一个 ActionMailer 拦截器,以确保我将要发送的电子邮件不会在我的应用程序 model/table 中被标记为退回或投诉。
# In config/initializers/invalid_email_interceptor.rb
class InvalidEmailInterceptor
def self.delivering_email(message)
if EmailResponse.exists? email: message.to
message.perform_deliveries = false
end
end
end
ActionMailer::Base.register_interceptor(InvalidEmailInterceptor)
当我尝试发送电子邮件时,出现以下错误:
uninitialized constant InvalidEmailInterceptor::EmailResponse
我的应用似乎在 InvalidEmailInterceptor class 而不是我应用的模型中寻找 EmailResponse。
我尝试在
上尝试不同的变体
MyApp::EmailResponse
和
require 'email_response'
但我仍然遇到同样的错误,或者甚至无法启动服务器。
有什么想法吗?
谢谢,
西蒙.
我不太确定,但我的解决方法是:
检查您的 app/models/email_response.rb
以确保模型已定义。注意:email_response
不是email_responses
如果是,那么你应该尝试:::EmailResponse
,虽然我知道你的模型应该在你的初始化器中可用。
我正在编写一个小机制来处理电子邮件退回和投诉。 我基本上遵循 blog post 解释如何实现这种机制。
我正在创建并注册一个 ActionMailer 拦截器,以确保我将要发送的电子邮件不会在我的应用程序 model/table 中被标记为退回或投诉。
# In config/initializers/invalid_email_interceptor.rb
class InvalidEmailInterceptor
def self.delivering_email(message)
if EmailResponse.exists? email: message.to
message.perform_deliveries = false
end
end
end
ActionMailer::Base.register_interceptor(InvalidEmailInterceptor)
当我尝试发送电子邮件时,出现以下错误:
uninitialized constant InvalidEmailInterceptor::EmailResponse
我的应用似乎在 InvalidEmailInterceptor class 而不是我应用的模型中寻找 EmailResponse。
我尝试在
上尝试不同的变体MyApp::EmailResponse
和
require 'email_response'
但我仍然遇到同样的错误,或者甚至无法启动服务器。
有什么想法吗?
谢谢,
西蒙.
我不太确定,但我的解决方法是:
检查您的
app/models/email_response.rb
以确保模型已定义。注意:email_response
不是email_responses
如果是,那么你应该尝试:
::EmailResponse
,虽然我知道你的模型应该在你的初始化器中可用。