0

いくつかのコンテキストのために:私はnotification_mailer.rb.

文字列に基づいてさまざまなメソッドを異なる方法で呼び出す方法はありますか? (別名、メソッド呼び出しの一部としての文字列変数)。

例:私は私ができることを知っています

NotificationMailer.send("#{email_type}_email", user.id)

電話する

NotificationMailer.welcome_email(user.id) / NotificationMailer.banned_email(user.id) / NotificationMailer.upgrade_email(user.id)

しかし、どのように呼び出すのですか (遅延部分に追加)

Notification.delay.welcome_email(user.id) ?

できますNotificationMailer.delay.send("#{email_type}_email", user.id)か?

4

1 に答える 1

1

それぞれがユーザーを取得するさまざまな通知メソッドを持つ ActionMailer である NotificationMailer オブジェクトがあると仮定すると、簡単な Sidekiq ジョブを記述してバックグラウンドで電子メールを送信できます。

class NotificationWorker
  include Sidekiq::Worker

  def perform(notification_type, user_id)
    user = User.find(user_id)
    NotificationMailer.send(notification_type, user).deliver
  end
end

これで、そのジョブを呼び出して非同期通知電子メールをキューに入れることができます。

NotificationWorker.perform_async('welcome_email', user.id)
于 2013-08-06T14:58:42.423 に答える