zoukankan      html  css  js  c++  java
  • Rails跳过回调方法

    1. 方法跳过

    使用下列方法可跳过回调:

    decrement decrement_counter delete delete_all increment increment_counter

    toggle touch update_column update_columns update_all update_counters

    2. 跳过validate验证

    保存的时候用validate: false

    user.save(:validate => false)

    3. create,save相关回调(ex: after_create, before_save)

    例如以下代码 after_create回调

    class User < ActiveRecord::Base
      after_create :send_email
    
      def send_email
        #send email to user
      end
    
    end

    rails 提供skip_callback(name, *filter_list, &block)方法跳过回调。在执行完skip_callback后要执行set_callback方法恢复回调。

    User.skip_callback(:create, :after, :send_email)
    
    user = User.new
    user.email = "xxxx"
    user.save
    
    User.set_callback(:create, :after, :send_email)

    上面这种方法虽然可行,但是存在线程安全的问题。

    下面是线程安全的跳过回调的方法。

    class User < ActiveRecord::Base
      after_create :send_email, unless: :skip_send_email
    
      attr_accessor :skip_send_email
    
      def send_email
        #send email to user
      end
    end
    
    
    # 这样就会跳过回调
    user = User.new
    user.skip_send_email = true
    user.email = "xxxx"
    user.save
  • 相关阅读:
    JS 面向对象
    堆 栈
    考试题
    HTML Meta标签
    Nodejs 安装
    CSS3 背景图片的大小位置
    JS Math函数
    CSS3 巧用before after选择器
    计算机网络原理_数据链路层
    Asp.net_验证控件
  • 原文地址:https://www.cnblogs.com/wangyuyu/p/15048121.html
Copyright © 2011-2022 走看看