Ruby on rails 发送带有延迟作业的时事通讯
我有和Ruby on rails 发送带有延迟作业的时事通讯,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,delayed-job,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,Delayed Job,我有和admin\u mailer: class AdminMailer < ActionMailer::Base def send_message_to_all_users(user, subject, body, locale) @user = user @body = body @locale = locale mail(:to => user.email, :subject => subject) end end 在我的车型中用户
admin\u mailer
:
class AdminMailer < ActionMailer::Base
def send_message_to_all_users(user, subject, body, locale)
@user = user
@body = body
@locale = locale
mail(:to => user.email, :subject => subject)
end
end
在我的车型中用户
class User
include Mongoid::Document
include Mongoid::Timestamps::Created
.
.
.
#delayed jobs methods
def self.send_message_to_all_users(user, subject, body, locale)
AdminMailer.send_message_to_all_users(user, subject, body, locale).deliver
end
def deliver
sleep 15
end
end
用户的邮件列表
非常长,超过20000封电子邮件
我的问题是,用这种方式发送带有大邮件列表的时事通讯是否正确,或者我可以用更好的方式完成这项任务。
谢谢大家! 看看这个,如果你被锁定使用延迟作业,看看这个。cast特别针对延迟邮寄。我认为您应该在此处查看“批量查找”方法: 在您的情况下,您可以首先批量查找所有用户,然后将每个批分配给send_email_to_all_users方法调用(用每个批替换User.all) 或者,更好的是,您可以将整个新闻稿流程移动到它自己的类中,并稍微封装它(因此,仍然从控制器调用该方法,但运行该类中的所有逻辑)
无论如何,我认为批量查找是您所需要的。谢谢,但我使用的是
延迟作业
,添加其他后台作业是不可能的。非常感谢!
class User
include Mongoid::Document
include Mongoid::Timestamps::Created
.
.
.
#delayed jobs methods
def self.send_message_to_all_users(user, subject, body, locale)
AdminMailer.send_message_to_all_users(user, subject, body, locale).deliver
end
def deliver
sleep 15
end
end