nkm*_*nkm 12 activerecord ruby-on-rails
我正在开发一个功能,我需要在记录字段值成功更新后触发邮件到用户列表.
例如:我有一个Blog模型,它具有已发布的属性(表示我的数据库表中的一列),默认值为false.当用户发布博客时,字段值将变为true,我需要发送一些邮件.
任何帮助都非常感谢...
Wiz*_*Ogz 29
1)可能有点主观,但我会回答2)ActiveRecord提供指示属性是否已更改的方法.您可以使用属性名称+ _changed?
.例如,如果您的模型具有name
属性,那么它也将响应#name_changed?
以下是仅在属性已更改时才能发送电子邮件的一种方法:
class MyModel
after_update :send_email, :if => :column_name_changed?
def send_email
# Send email here
end
end
Run Code Online (Sandbox Code Playgroud)
3)可以通过追加来访问旧的属性值_was
.例如,#name_was
将返回name字段的旧值.
更新:
要在第一次将字段从false切换为true时发送电子邮件,您需要在数据库中添加另一个字段,例如email_sent
.由于send_email
回调的条件变得更加复杂,我将其移入回调本身.发送电子邮件后,将该email_sent
字段设置为true,以便不再发送电子邮件.
class MyModel
after_update :send_email
def send_email
if column_name_changed? && !email_sent?
# Send email here
update_attribute :email_sent, true
end
end
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6868 次 |
最近记录: |