我有一个rake任务发送下一个'x'邀请加入测试版它使用此代码:
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'传递给Mailer,以便链接显示在电子邮件中,但由于这是从rake任务运行而不是来自请求,因此它无法访问帮助程序方法。实现这一目标的最佳方式是什么?
答案 0 :(得分: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) %>