2013-08-31 47 views
0

我試圖在將它們添加到conversation時通知users。我可以通過查找對話訪問所有用戶,只需撥打@conversation.users即可。在這個例子中是3如何向HABTM關聯中的所有用戶發送電子郵件?

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 

我沒有得到任何錯誤,但它只發送電子郵件給一個用戶,而不是所有的人。我是否試圖以正確的方式做到這一點?我是否應該循環訪問模型中的用戶?

+0

你可以放''@ conversation.users.count'看看有多少用戶在那裏? – Bala

+0

你的方法似乎完全有效,所以不完全確定。你確定循環執行多次?或者,當然,如果您可以將完全相同的電子郵件發送給每個用戶,那麼您可以選擇將其發送到多個電子郵件地址。 – pdobb

+0

計數是相等的3.我將如何輸出郵件中的電子郵件地址? – bgadoci

回答

0

不應該在該

ConversationMailer.notify_mail(self.id).deliver 

是這樣

ConversationMailer.notify_mail(user).deliver 
0

的解決方案取決於你如何定義的notify_mail方法。然而,假設您的代碼是而不是將每個用戶都傳遞給該方法 - 而是傳遞Conversation對象,這是合理的。再次

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

,這是你的notify_mail方法是如何構成的隊伍,但如果它發送電子郵件到其傳遞的User對象,那麼這可能會解決你的問題:您可以通過以下方式解決此。

相關問題