0

usersに追加されたときに通知しようとしていconversationます。会話を見つけて を呼び出すだけで、すべてのユーザーにアクセスできます@conversation.users。この例では 3 です。

conversation has_and_belongs_to_many :users
user has_and_belongs_to_many :conversations

私のconversation.rbモデルでは、それぞれにメールを送信しようとしていますafter_save

  def send_notify_mail
    @conversation = self
    @conversation_users = @conversation.users
    @conversation_users.each do |user|
      ConversationMailer.notify_mail(self.id).deliver
    end
  end

エラーは発生しませんが、すべてのユーザーではなく、1 人のユーザーにのみメールが送信されます。私はこれを正しい方法でやろうとしていますか? モデル内のユーザーをループする必要がありますか?

4

2 に答える 2

0

これはいけません

ConversationMailer.notify_mail(self.id).deliver

こうなる

ConversationMailer.notify_mail(user).deliver
于 2013-08-31T21:38:12.040 に答える
0

解決策は、メソッドをどのように定義したかによって異なりますnotify_mail。ただし、現状のコードでは各ユーザーをメソッドに渡すのではなく、オブジェクトを渡しているConversation考えるのが妥当です。これは、次の方法で解決できます。

@conversation_users.each do |user|
  ConversationMailer.notify_mail(user).deliver
end

繰り返しますが、これはnotify_mailメソッドの構造に左右されますが、渡されたオブジェクトに電子メールを送信しているUser場合、これで問題が解決する可能性があります。

于 2013-08-31T21:45:50.373 に答える