0

現在、すべてのsmtp設定をenvironment.rbファイルに設定しています。

すべての設定をデータベースに保存しました。

モデルから smtp 設定をバインドしたい。

モデルからこれらの設定を動的にバインドするにはどうすればよいですか?

4

2 に答える 2

4

警告: smtp_settings はクラス変数であり、インスタンス変数ではありません。サーバーがユーザー要求ごとに異なる ruby​​ プロセスをフォークしている場合、上記の方法は機能します。新しいプロセスがフォークされず、代わりにスレッドがユーザー要求ごとに作成される場合、競合状態が発生する可能性があります。

于 2011-08-04T09:53:55.680 に答える
1
class UserMailer < ActionMailer::Base

   UserMailer.smtp_settings = {
      :tls            => Model.find_by_column_name("SMTP_TLS").column_name,
      :address        => Model.find_by_column_name("SMTP_ADDRESS").column_name,
      :port           => Model.find_by_column_name("SMTP_PORT").column_name,
      :domain         => Model.find_by_column_name("SMTP_DOMAIN").column_name
   }

  def mail_example(to_address,subject,options={})
    sender(to_address,subject,options)
  end

  def sender(to_address,subject,options)
    recipients to_address
    from Model.find_by_column_name("SMTP_FROM_ADDRESS").column_name
    subject subject
    sent_on Time.now
    body options
  end
end

共通の送信者関数を作成しました。それが役立つかもしれません。

于 2010-08-20T19:29:37.077 に答える