Как динамически изменить URL-адрес, используемый в accept_invitation_url в Devise Invitable?
Я использую Devise для приглашения. Мы используем разные субдомены, такие как test1.domain.com, test2.domain.com и т. Д. В одном приложении rails, и хотели бы, чтобы URL-адрес приглашения, который мы отправляем пользователям, отражал это.
Так как значение, кажется, основано на config var в 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, поэтому я даже не уверен, где это установлено.
Любая помощь очень ценится!
1 ответ
Ошибка новичка:
Хитрость заключалась в том, чтобы прекратить пытаться найти этот вопрос как удобный для разработки вопрос, а более общий вопрос 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