如何在 Devise Invitable 中动态更改 accept_invitation_url 中使用的 URL?

How to change URL used in accept_invitation_url dynamically in Devise Invitable?

我正在使用 Devise invitable 进行邀请。我们在单个 rails 应用程序中使用不同的子域,例如 test1.domain.com、test2.domain.com 等,并希望我们发送给用户的邀请 url 能够反映这一点。

因为该值似乎基于 config/production.rb:

中的配置变量
config.action_mailer.default_url_options = { host: 'www.domain.com' }

我不清楚更改电子邮件视图中使用的 url 的最佳方法是什么:

<%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, :invitation_token => @token) %>

我找不到 accept_invitation_url 的来源,所以我什至不确定它是在哪里设置的。

非常感谢任何帮助!

菜鸟错误:

诀窍是停止尝试将此作为设计不可避免的问题进行搜索,而更多的是一般的 ActionMailer 问题,这让我找到了这个简单的解决方案:http://excid3.com/blog/change-actionmailer-email-url-host-dynamically/

基本上只需使用您想要的任何逻辑在应用程序控制器中重置 url:

 before_filter :set_mailer_host

 def set_mailer_host
    ActionMailer::Base.default_url_options[:host] = request.host_with_port
 end