2010-05-24 117 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) %>