1

アプリケーションには 2 つのモデルがあります。家族 has_many 個の個人。個人の属している家族。

家族モデルのブールフィールドが「true」に設定されている場合、家族が「更新」されたときに、個人に対して保存されているすべての電子メールアドレスに電子メールが送信されるようにしようとしています。

誰でもこれを手伝ってもらえますか?個人が簡単に作成されたときに ActiveMailer に電子メールを送信させることができましたが、特定のフィールドの更新をトリガーする方法が見つかりませんか?

どんな助けでも大歓迎です!

4

3 に答える 3

3

Toby は正しい考えを持っていますが、これをコントローラーに実装する必要があることに同意しません...これは、モデルの after_update コールバックに適しています。このようなもの:

def update_fired
  if yourfield_changed?
     #send mail here
  end
end

次に、モデルでメソッドを after_update コールバックに設定していることを確認してください

于 2011-10-17T05:08:22.133 に答える
2

たぶん、アフターフィルターを使用できますか?

ファミリ モデルで

after_update :email_individuals


private
def email_individuals
  if boolean_field_changed?
    individuals.each do |i|
      // send out emails here
    end
  end
end

次のステップは、これを要求サイクルから外してキューに移動することです。

私があなたの質問を正しく理解したことを願っています。

于 2011-10-17T05:10:06.823 に答える
0

最も簡単な方法は、コントローラーの更新アクションに何かを追加することです

if individual.boolean_field_changed? and individual.boolean_field
  individuals.each do |ind|
    Mailer.deliver_mail(ind)
  end
end

Rails には、モデル フィールドの変更を検出するための API があります (上記の場合、フィールド名に _changed? を追加すると、フィールドが変更されたかどうかがわかります。

于 2011-10-17T05:01:21.903 に答える