我的应用程序中有两个模型。家庭有很多个人的。个人的belongs_to家庭。
我正在尝试这样做,以便当Families模型中的布尔字段设置为“true”时,当系列“更新”时,会向个人存储的所有电子邮件地址发送电子邮件。
任何人都可以帮忙吗?我已经能够让ActiveMailer在个人创建足够容易的时候发送电子邮件,但找不到触发更新特定字段的方法?
非常感谢任何帮助!
答案 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?添加到字段名称,它将告诉您字段是否已更改。