1

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

我正在尝试这样做,以便当家庭模型中的布尔字段设置为“真”时,当家庭“更新”时,一封电子邮件将发送到针对个人存储的所有电子邮件地址。

有人能帮忙吗?我已经能够在足够轻松地创建个人时让 ActiveMailer 发送电子邮件,但找不到触发特定字段更新的方法?

任何帮助将不胜感激!

4

3 回答 3

3

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

def update_fired
  if yourfield_changed?
     #send mail here
  end
end

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

于 2011-10-17T05:08:22.133 回答
2

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

关于家庭模型

after_update :email_individuals


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

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

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

于 2011-10-17T05:10:06.823 回答
0

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

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

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

于 2011-10-17T05:01:21.903 回答