2010-05-24 175 views
1

我有发出下一个“X”的邀请参加一个测试rake任务使用路由助手它使用此代码:在Rake任务

desc "This will send out the next batch of invites for the beta" 
task :send_invites => :environment do 
    limit = ENV['limit'] 
    c = 0 
    invitation = Invitation.all(:conditions => { :sent_at => nil, :sender_id => nil }, :limit => limit).each do |i| 
    Mailer.deliver_invitation(i, register_url(i.token)) 
    c.increment! 
    end 

    puts "Sent #{c} invitations." 
end 

我需要在“register_url”来传递邮件程序为了使链接显示在电子邮件中,但由于这是从rake任务运行而不是从请求运行,因此它无法访问辅助方法。达到这个目标的最好方法是什么?

回答

1

您是否使用ActionMailer传递消息?它看起来像。如果是这样,你可以传递令牌并让Mailer自己使用register_url格式化令牌。所以,你会怎么做:

invitation = Invitation.all(:conditions => { :sent_at => nil, :sender_id => nil }, :limit => limit).each do |i| 
    Mailer.deliver_invitation(i) 
    c.increment! 
end 

,然后在你的邀请模板,你只想用

<%= register_url(i.token) %>