首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在before_save之前触发before_create

在before_save之前触发before_create
EN

Stack Overflow用户
提问于 2018-09-19 05:48:01
回答 1查看 266关注 0票数 2

在ActiveRecord回调链中,before_save在before_create之前被触发:

代码语言:javascript
复制
before_validation 
after_validation 
before_save 
around_save 
before_create 
around_create 
after_create 
after_save 
after_commit/after_rollback

问题是我有一个设置reference_number的before_create。我有一个before_save,它可以检查已更改的属性并处理已更改的属性。由于before_create是在before_save之后调用的,因此该reference_number不被视为已更改的属性,因此我无法对其进行处理:

代码语言:javascript
复制
before_create :set_reference_number
before_save :set_denormalized_fields

def set_reference_number
   prefix = determine_type ? 'CO' : 'CA'
   self.reference_number = "#{prefix}-#{1}"
end

def set_denormalized_fields
  if changes.any?
    handle_changed_attributes changes
  end
end

当我调用set_denormalized_fields时,如何更改回调链以确保reference_number是已更改的属性?

EN

回答 1

Stack Overflow用户

发布于 2018-09-19 12:44:13

您可以添加一个类似于if changes.any? || new_record?的条件,但您需要确保该属性已实际设置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52395040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档