いくつかのActionMailerインスタンスで繰り返し呼び出すメソッドがいくつかあります。それらをモジュールに移動して、グループとして含めてDRYを実行できるようにします。
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
SendgridSettings:Module`のエラーundefined method
open_tracking'が発生します。これは、モジュールを含むオブジェクトではなく、モジュールにメソッドを適用しているように見えるためです。
私がオンラインで見ている例のほとんどは、モジュールでメソッドを定義し、継承オブジェクトでそれらを使用することに関するものです。私は反対のことをしようとしていると思いますが、それを行う方法を見つけることができませんでした。そのようなことは可能ですか、それとも良い考えですか?私はモジュールを使用することに慣れていません。それは、グループとして時々呼び出される必要があるメソッドを分離するための自然な方法のように思えました。