这样的事情可以通过使用Wicked PDF 来实现。根据我过去的理解和您的问题,您似乎想要生成某种包含附件 pdf 的电子邮件。如果我的立场正确,你的邮件里会有这样的东西。
def overtime_pdf(user, booking)
@bookings = booking
@user = user
mail(:subject => 'Overtime', :to => user.email) do |format|
format.text # renders overtime_pdf.text.erb for body of email
format.pdf do
attachments['bookings.pdf'] = WickedPdf.new.pdf_from_string(
render_to_string(:pdf => 'overtime', :template =>
'bookings/index.pdf.erb', :layouts => 'pdf.html')
)
end
end
end
如果您使用 heroku,则在执行此操作时,您可以使用 heroku-scheduler。您要做的是创建一个接受用户参数的类方法,然后您可以在控制器操作中传递用户并在 rake 任务中使用它。所以你可以有这样的东西。
类
def self.send_overtime_mail(user, bookings)
BookingMailer.booking_pdf(user, bookings).deliver
end
耙任务
task :overtime_report => :environment do
every 3.hours do
user = User.where(:role => :administrator).first
bookings = Bookings.where(:day => Date.today.beginning_of_month..Date.today.end_of_month)
Booking.send_overtime_mail(user, bookings)
end
end