美文网首页
《Rails-Guides》Reading notes four

《Rails-Guides》Reading notes four

作者: 榆树下的小豆芽儿 | 来源:发表于2018-09-11 20:38 被阅读0次

    回调概述

            在 Rails 应用正常运作期间,对象可以被创建、更新或删除。Active Record 为对象的生命周期提供了钩子,使我们可以控制应用及其数据。

            回调使我们可以在对象状态更改之前或之后触发逻辑。

            回调是在对象生命周期的某些时刻被调用的方法。通过回调,我们可以编写在创建、保存、更新、删除、验证或从数据库中加载 Active Record 对象时执行的代码。

            回调在使用之前需要注册。我们可以先把回调定义为普通方法,然后使用宏式类方法把这些普通方法注册为回调:

    可用的回调

            下面按照回调在 Rails 应用正常运作期间被调用的顺序,列出所有可用的 Active Record 回调。

    创建对象

    更新对象

    删除对象

    after_initialize 和 after_find 回调

            当 Active Record 对象被实例化时,不管是通过直接使用 new 方法还是从数据库加载记录,都会调用 after_initialize 回调。使用这个回调可以避免直接覆盖 Active Record 的 initialize 方法。

            当 Active Record 从数据库中加载记录时,会调用 after_find 回调。如果同时定义了 after_initialize 和 after_find 回调,会先调用 after_find 回调。

            after_initialize 和 after_find 回调没有对应的 before_* 回调,这两个回调的注册方式和其他 Active Record 回调一样。

    调用回调

            下面这些方法会触发回调:

            下面这些查找方法会触发 after_find 回调:

            每次初始化类的新对象时都会触发 after_initialize 回调。

            和验证一样,我们可以跳过回调。使用下面这些方法可以跳过回调:慎重地使用这些方法,因为有些回调包含了重要的业务规则和应用逻辑,在不了解潜在影响的情况下就跳过回调,可能导致无效数据。

    相关文章

      网友评论

          本文标题:《Rails-Guides》Reading notes four

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