ruby-on-rails – Rails – ActiveRecord – 在更改字段值时触发
发布时间:2020-12-16 22:42:01 所属栏目:百科 来源:网络整理
导读:我正在处理一个功能,当一个记录字段值被成功更新后,我需要触发邮件到用户列表. 例如:我有一个博客模型已经发布属性(表示我的数据库表中的列),默认值为false.当用户发布博客时,字段值将变为true,我需要发送一些邮件. 哪个是最好的做法? 如果我可以使用after
我正在处理一个功能,当一个记录字段值被成功更新后,我需要触发邮件到用户列表.
例如:我有一个博客模型已经发布属性(表示我的数据库表中的列),默认值为false.当用户发布博客时,字段值将变为true,我需要发送一些邮件. 哪个是最好的做法? 任何帮助高度赞赏… 解决方法
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 3)可以通过追加_was来访问旧的属性值.例如. #name_was将返回名称字段的旧值. 更新: 只有在首次将字段从“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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |