0

文字列列にアクセスできるドキュメントモデルと、文字列列チームを持つユーザーモデルがあります。ドキュメントには、「スタッフ、営業、マネージャー」などのアクセス用のアイテムの配列を入力できます。一方、ユーザーはチームの下に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を参照する必要があります。

また、ドキュメントとユーザーの間に関連性はありません。

4

1 に答える 1

1

答え

document_observerから

def after_save(model)
  @users = User.all
  @users.each do |user|
    if model.access.include? user.team
      MultiMailer.doc_notification(model, user).deliver
    end
  end
end

メーラーから

def doc_notification(document, user)
  @document = document
  mail(:to => user.email)
end

クレジットは、私の質問に直接答えてくれたTriangleRubyBrigadeのとても素敵なNathanielTalbottに贈られます。時々家を出るのに役立つと思います。

于 2012-11-30T03:07:32.630 に答える