我在尝试弄清楚如何向在论坛主题中发帖的所有用户发送电子邮件时遇到了一些麻烦。我在控制器的正确位置有user_mailer设置和UserMailer.new_post(@ post).deliver。只是想弄清楚如何只提取具有属于该主题的帖子的用户的电子邮件(数组)。
我的伪代码是:
User.emails.where(User.posts == project.post)
或类似的东西。
几乎就像;假设我有一个博客。并有10位用户发表评论我希望能够触发我的ActionMailer向所有10个用户发送电子邮件,如果有人在他们之后发表新评论。
我是否只需将它们全部放在:bcc下一封电子邮件或将它们作为单独的电子邮件发送?到目前为止,我认为将它们添加到:bcc作为像[array] .join(“,”)这样的数组 - 这是不正确的?
btw:我正在使用Heroku,Rails 3.1和SendGrid插件
答案 0 :(得分:2)
class Project < ActiveRecord::Base
has_many :posts, after_add: :notify_on_new_post
def notify_on_new_post(post)
users_to_notify = posts.map(&:user).uniq - [post.user]
bcc = users_to_notify.map(&:email).compact * ', '
# ...
end
end
class Post < ActiveRecord::Base
belongs_to :project
belongs_to :user
end
class User < ActiveRecord::Base
has_many :posts
end
答案 1 :(得分:1)
您需要先对用户进行范围调整,然后选择电子邮件属性。
获取此类用户:
users = User.where(:posts => project.post)
然后您可以使用该数组用户执行任何操作,例如将电子邮件地址映射到数组:
user_emails = users.map { |u| u.email }