[ruby on rails] rails的回调

本文详细介绍了Rails框架中对象创建、更新和销毁过程的回调方法及其执行顺序,包括before_validation、after_save、after_commit等。同时,讨论了从Rails 5.0到5.1版本中回调方法使用的变化,如attribute_changed?等方法的适用范围。此外,还列举了一系列数据库操作方法,如increment!、update_all等。
摘要由CSDN通过智能技术生成

回调方法

  • create
  • create!
  • destroy
  • destroy!
  • destroy_all
  • destroy_by
  • save
  • save!
  • save(validate: false)
  • toggle!
  • touch
  • update_attribute
  • update
  • update!
  • valid?

跳过回调

  • decrement!
  • decrement_counter
  • delete
  • delete_all
  • delete_by
  • increment!
  • increment_counter
  • insert
  • insert!
  • insert_all
  • insert_all!
  • touch_all
  • update_column
  • update_columns
  • update_all
  • update_counters
  • upsert
  • upsert_all

回调顺序

3.1 Creating an Object

  • before_validation
  • after_validation
  • before_save
  • around_save
  • before_create
  • around_create
  • after_create
  • after_save
  • after_commit / after_rollback

3.2 Updating an Object

  • before_validation
  • after_validation
  • before_save
  • around_save
  • before_update
  • around_update
  • after_update
  • after_save
  • after_commit / after_rollback

3.3 Destroying an Object

  • before_destroy
  • around_destroy
  • after_destroy
  • after_commit / after_rollback

回调版本改动

attribute_changed? attribute_change等方法在5.1后before_save, before_update里还可以继续用,在after_save, after_update里不能用

Rails 5.0- (before_save, before_update)Rails 5.1+ (before_save, before_update)Rails 5.1+ (after_save, after_update)
attribute_changed?will_save_change_to_attribute?saved_change_to_attribute?
attribute_changeattribute_change_to_be_savedsaved_change_to_attribute
attribute_wasattribute_in_databaseattribute_before_last_save
changeschanges_to_savesaved_changes
changed?has_changes_to_save?saved_changes?
changedchanged_attribute_names_to_savesaved_changes.keys
changed_attributesattributes_in_databasesaved_changes.transform_values(&:first)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值