Ruby on rails 禁用对rails ahoy_电子邮件的跟踪
我最近从1.1.1升级到了ahoy_email版本2.0.3,我一直在重构代码以使用最新版本,但我以前的一项功能有点问题。问题如下:Ruby on rails 禁用对rails ahoy_电子邮件的跟踪,ruby-on-rails,ahoy,Ruby On Rails,Ahoy,我最近从1.1.1升级到了ahoy_email版本2.0.3,我一直在重构代码以使用最新版本,但我以前的一项功能有点问题。问题如下: class DigestMailer < ActionMailer::Base has_history user: -> { @recipient }, extra: -> { {digest_message_id: @digest_message.id} } track_clicks campaign: "digest&quo
class DigestMailer < ActionMailer::Base
has_history user: -> { @recipient }, extra: -> { {digest_message_id: @digest_message.id} }
track_clicks campaign: "digest"
def digest(digest_message, user, **options)
@recipient = user
@digest_message = digest_message
self.class.has_history options
....
end
end
DigestMailer.digest(DigestMessage.first, User.first, click: false, message: false).deliver_now
class DigestMailer < ActionMailer::Base
has_history user: -> { @recipient }, extra: -> { {digest_message_id: @digest_message.id} }
track_clicks campaign: "digest"
def digest digest_message, user, **options
@recipient = user
@digest_message = digest_message
self.ahoy_options = AhoyEmail.default_options.merge(options)
end
end
DigestMailer.digest(DigestMessage.first, User.first, click: false, message: false).deliver_now
class DigestMailer < ActionMailer::Base
has_history(
user: -> { params[:recipient] },
extra: -> { {digest_message_id: params[:digest_message].id} },
if: -> { params[:options].try(:fetch, :message) != false }
)
track_clicks(
campaign: "digest",
if: -> { params[:options].try(:fetch, :track_clicks) != false }
)
def digest
recipient = params[:recipient]
digest_message = params[:digest_message]
Rails.logger.info "Sending digest to #{recipient} with email #{recipient.data.email}"
internal_send_digest_message(digest_message.title)
end
end
DigestMailer.with(digest_message:DigestMessage.first, recipient: User.first, options: {track_clicks: false, message: false}).deliver_now
我希望能够禁用对某些已发送邮件的跟踪
在版本2.0.0中对a hoy_电子邮件所做的更改后,所有设置a hoy_设置的类方法都会执行“添加前”操作,该操作会合并三种方法中的选项集,即,跟踪单击
,具有_历史
和utm_参数
,因此,由于这些选项仅在before_操作中合并,因此我无法执行以下操作:
class DigestMailer < ActionMailer::Base
has_history user: -> { @recipient }, extra: -> { {digest_message_id: @digest_message.id} }
track_clicks campaign: "digest"
def digest(digest_message, user, **options)
@recipient = user
@digest_message = digest_message
self.class.has_history options
....
end
end
DigestMailer.digest(DigestMessage.first, User.first, click: false, message: false).deliver_now
class DigestMailer < ActionMailer::Base
has_history user: -> { @recipient }, extra: -> { {digest_message_id: @digest_message.id} }
track_clicks campaign: "digest"
def digest digest_message, user, **options
@recipient = user
@digest_message = digest_message
self.ahoy_options = AhoyEmail.default_options.merge(options)
end
end
DigestMailer.digest(DigestMessage.first, User.first, click: false, message: false).deliver_now
class DigestMailer < ActionMailer::Base
has_history(
user: -> { params[:recipient] },
extra: -> { {digest_message_id: params[:digest_message].id} },
if: -> { params[:options].try(:fetch, :message) != false }
)
track_clicks(
campaign: "digest",
if: -> { params[:options].try(:fetch, :track_clicks) != false }
)
def digest
recipient = params[:recipient]
digest_message = params[:digest_message]
Rails.logger.info "Sending digest to #{recipient} with email #{recipient.data.email}"
internal_send_digest_message(digest_message.title)
end
end
DigestMailer.with(digest_message:DigestMessage.first, recipient: User.first, options: {track_clicks: false, message: false}).deliver_now
这是可行的,因为我在调用before\u操作回调之后覆盖ahoy\u选项属性,调用before\u操作回调之后覆盖before
调用before\u操作回调之后,它就起作用了
所以我的问题是:这是正确的方法吗
因为,从3年前开始,他清楚地说:
保留禁用跟踪的旧方法
但是在文档中找不到它。对于遇到相同问题的任何人,我已经找到了解决方案,它包括两个方面:
使用a并使用:如果轨迹的选项单击
,具有历史记录
和utm参数
。代码可以重写如下:
class DigestMailer < ActionMailer::Base
has_history user: -> { @recipient }, extra: -> { {digest_message_id: @digest_message.id} }
track_clicks campaign: "digest"
def digest(digest_message, user, **options)
@recipient = user
@digest_message = digest_message
self.class.has_history options
....
end
end
DigestMailer.digest(DigestMessage.first, User.first, click: false, message: false).deliver_now
class DigestMailer < ActionMailer::Base
has_history user: -> { @recipient }, extra: -> { {digest_message_id: @digest_message.id} }
track_clicks campaign: "digest"
def digest digest_message, user, **options
@recipient = user
@digest_message = digest_message
self.ahoy_options = AhoyEmail.default_options.merge(options)
end
end
DigestMailer.digest(DigestMessage.first, User.first, click: false, message: false).deliver_now
class DigestMailer < ActionMailer::Base
has_history(
user: -> { params[:recipient] },
extra: -> { {digest_message_id: params[:digest_message].id} },
if: -> { params[:options].try(:fetch, :message) != false }
)
track_clicks(
campaign: "digest",
if: -> { params[:options].try(:fetch, :track_clicks) != false }
)
def digest
recipient = params[:recipient]
digest_message = params[:digest_message]
Rails.logger.info "Sending digest to #{recipient} with email #{recipient.data.email}"
internal_send_digest_message(digest_message.title)
end
end
DigestMailer.with(digest_message:DigestMessage.first, recipient: User.first, options: {track_clicks: false, message: false}).deliver_now
class DigestMailer{params[:recipient]},
额外:->{{digest_message_id:params[:digest_message].id},
if:->{params[:options].try(:fetch,:message)!=false}
)
跟踪点击(
运动:“文摘”,
if:->{params[:options].try(:fetch,:track_clicks)!=false}
)
def摘要
收件人=参数[:收件人]
摘要消息=参数[:摘要消息]
Rails.logger.info“使用电子邮件#{recipient.data.email}向#{recipient}发送摘要”
内部消息发送消息摘要(摘要消息标题)
结束
结束
DigestMailer.with(digest_消息:DigestMessage.first,收件人:User.first,选项:{track_clicks:false,message:false})。立即交付
它将按预期工作