gpt4 book ai didi

ruby-on-rails - 如何使用公寓 gem 处理电子邮件中的网址

转载 作者:行者123 更新时间:2023-12-05 00:57:55 25 4
gpt4 key购买 nike

我正在使用 apartment用于 Multi-Tenancy 的 gem。

除了我电子邮件中的 url 之外,一切正常。因此,对于从任何请求和后台作业发送的每封电子邮件都使用 default_url_options为主机。

关于如何处理电子邮件中的主机切换的任何建议?

最佳答案

猴子补丁的不同想法:

# app/models/action_dispatch_routing_subdomain_extension.rb

module ActionDispatch::Routing

module RouteSetExtensions

# This allows lambdas as subdomain parameter for `default_url_options`:
#
# config.action_mailer.default_url_options = {
# host: 'example.com',
# protocol: 'https',
# subdomain: lambda { ... }
# }
#
def url_for(options, route_name = nil, url_strategy = ActionDispatch::Routing::RouteSet::UNKNOWN)

if options[:subdomain].respond_to? :call
options[:subdomain] = options[:subdomain].call
end

if Rails.application.config.action_mailer.default_url_options[:subdomain].respond_to? :call
options[:subdomain] ||= Rails.application.config.action_mailer.default_url_options[:subdomain].call
end

super(options, route_name, url_strategy)

end
end

class RouteSet
prepend RouteSetExtensions
end

end

初始化程序:
# config/initializers/action_dispatch_routing_subdomain_extension.rb
require 'action_dispatch_routing_subdomain_extension'

然后,您可以在子域定义中使用 lambda:
# config/environments/production.rb

Rails.application.configure do
# ...

config.action_mailer.default_url_options = {
host: 'example.com',
protocol: 'https',
subdomain: lambda { Apartment::Tenant.current }
}
end

关于ruby-on-rails - 如何使用公寓 gem 处理电子邮件中的网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33873230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com