当rails模型布尔字段设置为true而不是false时,触发电子邮件发送

时间:2011-10-17 04:53:52

标签: ruby-on-rails email triggers mailer

我的应用程序中有两个模型。家庭有很多个人的。个人的belongs_to家庭。

我正在尝试这样做,以便当Families模型中的布尔字段设置为“true”时,当系列“更新”时,会向个人存储的所有电子邮件地址发送电子邮件。

任何人都可以帮忙吗?我已经能够让ActiveMailer在个人创建足够容易的时候发送电子邮件,但找不到触发更新特定字段的方法?

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

Toby有正确的想法,但我不同意这应该在控制器中实现...这更适合于模型after_update回调。像这样的东西:

def update_fired
  if yourfield_changed?
     #send mail here
  end
end

然后在模型中确保将方法设置为after_update回调

答案 1 :(得分:2)

也许你可以使用后过滤器?

在家庭模型上

after_update :email_individuals


private
def email_individuals
  if boolean_field_changed?
    individuals.each do |i|
      // send out emails here
    end
  end
end

下一步是将其移出请求周期并进入队列。

希望我能正确地理解你的问题。

答案 2 :(得分:0)

最简单的方法是在控制器的更新操作中添加一些东西

if individual.boolean_field_changed? and individual.boolean_field
  individuals.each do |ind|
    Mailer.deliver_mail(ind)
  end
end

Rails有一个用于检测模型字段更改的API(在上面的例子中,您将_changed?添加到字段名称,它将告诉您字段是否已更改。