我有几个方法我在几个 ActionMailer 实例中反复调用,我想将它们移动到一个模块中,以便我可以将它们作为一个组包含并干燥。
module SendgridSettings
open_tracking true
add_filter_setting("subscriptiontrack", "enable", 1)
add_filter_setting("subscriptiontrack","replace","{{ unsubscribe_url }}")
uniq_args({'id' => email.id, 'organization_id' => organization.id})
substitute '{{ person.first_name }}', recipients
set_credentials(organization)
end
这是相关的邮件代码:
class NewChargeMailer < ActionMailer::Base
def charge_email(recipient, transaction, organization)
include SendgridSettings
我收到undefined method
SendgridSettings:Module 的错误 open_tracking',因为它似乎是在模块上应用方法,而不是在包含它的对象上。
我在网上看到的大多数例子都是关于在模块中定义方法,然后在继承对象中使用它们。我想我正试图做相反的事情,并且无法找到一种方法来做到这一点。这样的事情是否可能,甚至是一个好主意?我并不热衷于使用模块,它似乎是隔离有时需要作为一个组调用的方法的自然方式。