2010-02-01 48 views
1

我已经想出了如何以单一方式向用户发送电子邮件(有人输入他们的电子邮件地址,并且邮件模型使用friend.email(朋友是模型和电子邮件是该属性)向该人发送了一封电子邮件。 。邮寄多个用户

现在我试图发送电子邮件到几个用户,我开始写作的过程中我的用户模型如下图所示:

class User < ActiveRecord::Base 

    acts_as_authentic 

    def mail_out 

    weekday = Date.today.strftime(%A).downcase 

    @users = find(:conditions => "#{weekday}sub = t") 

    @users.each { |u| UserMailer.deliver_mail_out(u)} 


    end 

end 

我知道有可能是一个更好的方式来做到这一点,但每个用户在我的数据库中可以有t或f为mondaysub,tuesdaysub等。所以我想抛出所有用户的属性mondaysub设置为“t”到@monday变量(每周的每一天都是一样的)。现在我想检查一周中的哪一天,如果是星期一,则发送一封电子邮件给@monday变量中的每个用户。我已经使用每当如下:

every 1.day, :at => '5:30 am' do 
    runner "User.mail_out" 
    end 

这将调用mail_out过程在我的模型,每天一次(我认为)。

现在我有我的邮件设置如下:

class UserMailer < ActionMailer::Base 
    def mail_out(users) 
    @recipients = { } 
    users.each do |user| 
     @recipients[user.email] = { :name => user.name } 
    end 


    from  "[email protected]" 
    subject  "Check out the trailer of the day!" 
    body  :user => user 
    end 

end 

我的问题是,如何连接这些结合在一起,我希望我在正确的轨道上......所以我每天早上5希望:00,如果它是星期一,则mondaysub设置为“t”的每个用户将邮寄特定的用户制作模板。我开始非常困惑自己,任何帮助都会非常感激。你可以告诉我这是新的,但我一直在阅读大量的书籍/教程。

谢谢!

+0

而不是一堆finder方法,为什么不只是有一个'find_subscription_by_day'方法,你过去的一天? – 2010-02-01 17:31:54

回答

0

检查this railscast episode关于发送电子邮件。您只需要在views/usermailer/mail_out.erb.html上为您的电子邮件创建模板文件。

+0

谢谢,但我可以创建一个模板并完成向一个用户发送邮件所需的一切。我需要帮助将邮件发送给满足特定属性条件的多个用户。 – 2010-02-01 17:04:31

+0

在你的模型方法上找到类似的东西。 weekday = Date.today.strftime(%A).downcase @users = find(:conditions =>“#{weekday} sub = t”) @ users.each {| u | UserMailer.deliver_mail_out(u)} – Lucas 2010-02-01 17:15:02

+0

我想我得到它的工作,我结合了多个答案。但是,我的用户模型中出现错误,我上面更新了我的模型。 – 2010-02-01 19:10:15