0

我有一个带有字符串列访问权限的Document模型和一个带有字符串列team的User模型。在文档中,我可以输入一系列项目以供访问,例如“员工、销售人员、经理”。同时,一个用户team下只有一项

我正在尝试根据每个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。

我还应该提到 Document 和 User 之间没有关联。

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

归功于 Triangle Ruby Brigade非常友善的Nathaniel Talbott,他亲自回答了我的问题。我想有时走出家门会有所帮助。

于 2012-11-30T03:07:32.630 回答