美文网首页
Rails5获取字段改变事件

Rails5获取字段改变事件

作者: 得失的瘦马 | 来源:发表于2017-12-15 10:23 被阅读84次

    在业务逻辑中,我们经常需要在某些事件发生后触发一些动作,
    譬如当用户的手机号码改变后,
    我们需要给这个用户新的号码发送一条短信告知手机号码已经改变,

    rails4 的做法,可能是在 after_save时触发事件

    如:

    user.rb

    after_save :when_cell_change_send_message
    
    private
        def when_cell_change_send_message
            if (self.cell_changed?)
                #send_messaged
            end
        end
    

    这个时候会有一个问题,就是after_save 后可能会rollback
    这样手机号码 cell rollback 并未改变,而短信已经发送出去了
    目前的做法,我并不是直接的去发送短信,而是触发下一个commit
    然后再发送短信,这样很麻烦

    在Rails5中已经解决了这样的问题

    user.rb

    after_commit :when_cell_change_send_message
    
    private
        def when_cell_change_send_message
            if(self.saved_change_to_cell?) #self.saved_change_to_attribute?(:cell)
                #send_messaged
            end
        end
    

    after_commit 在rails4中是无法获取change事件的
    而在rails5中是可以获取字段的change事件

    相关文章

      网友评论

          本文标题:Rails5获取字段改变事件

          本文链接:https://www.haomeiwen.com/subject/hrurwxtx.html