Cog*_*Sum 2 ruby ruby-on-rails ruby-on-rails-5
我们一直在嘲笑我们的电子邮件工作,直到我们真正将SendGrid Gem包含在我们的工作人员的顶端
require 'sendgrid-ruby'
include SendGrid
class Notifications::WelcomeWorker
include Sidekiq::Worker
def perform(email_id)
emailAddr = Email.find(email_id)
...
end
end
Run Code Online (Sandbox Code Playgroud)
问题似乎出现,因为SendGrid在(电子邮件)中具有相同的模型
从而生成消息
undefined method `find' for SendGrid::Email:Class
Run Code Online (Sandbox Code Playgroud)
我试过通过ApplicationRecord :: Email调用电子邮件来更具特定于上下文,但无济于事.
所有SO和其他指南通常都会改变我们的模型名称,但我觉得必须有更好的方法.要清楚我们正在运行Rails 5,所以我想知道是否有一个更新它来解决这个问题,我根本没有找到.
include SendGrid 它是罪魁祸首.
它将SendGrid模块中的所有常量添加到当前模块(可能是最高级别),因此您可以使用SendGrid没有前缀的类,例如,Email.new而不是SendGrid::Email.new.
缺点是它也会混淆你现有的常数.
您可以将其包含在特定模块下:
class Notifications::WelcomeWorker
include Sidekiq::Worker
include SendGrid
# ...
end
Run Code Online (Sandbox Code Playgroud)
然后,Email解析Sendgrid::Email并::Email解析为您的顶级Email课程.
或者您可以简单地删除该include SendGrid行并使用SendGrid::前缀.