文字列列にアクセスできるドキュメントモデルと、文字列列チームを持つユーザーモデルがあります。ドキュメントには、「スタッフ、営業、マネージャー」などのアクセス用のアイテムの配列を入力できます。一方、ユーザーはチームの下に1つのアイテムしか持っていません。
各user.teamがDocument.accessの配列に含まれているかどうかに基づいて、特定のユーザーにメールを送信しようとしています。
たとえば、の場合Document.access = "sales, management"
、のユーザーのみteam = "sales" or team = "management"
にメールが送信されます。team="accounting"などの他のユーザーはそうではありません。
アップデート:
この質問で私が集めたものから、ActionMailerはループできないように見えるので、document_observerを変更しました。ループ部分をメーラーから移動したので、user.emailは次のようにエラーになります。
undefined method 'user' for
'joe@net.com'のような文字列を貼り付けると、適切な数の電子メールが送信されるため、その部分は機能しているように見えます。今では、正しいメールアドレスをメッセージに渡すことが重要です。
以下の私のdocument_observerからの関連コード:
def after_save(model)
@users = User.all
@users.each do |user|
if model.access.include? user.team
MultiMailer.doc_notification(model).deliver
end
end
end
メーラーからの関連コード。メールごとにuser.emailを渡すにはどうすればよいですか?
def doc_notification(document)
mail(:to => 'joe@net.com')
end
最新の更新:
わかりました、私はちょうどいくつかの行をに切り替えました
MultiMailer.doc_notification(user).deliver
と
def doc_notification(user)
これで、適切なユーザーのそれぞれに電子メールが送信されますが、上記の問題を元に戻し、不明なユーザーを不明なドキュメントと交換しているようです。電子メールは、更新されたばかりのドキュメントのURLを参照する必要があります。
また、ドキュメントとユーザーの間に関連性はありません。