Ruby on rails 为什么在create操作上触发_update回调之前?

Ruby on rails 为什么在create操作上触发_update回调之前?,ruby-on-rails,ruby-on-rails-4,rails-activerecord,Ruby On Rails,Ruby On Rails 4,Rails Activerecord,我有两个模型,一个标志可以有很多订单 Class Logo has_many :orders, inverse_of: :logo Class Order belongs_to :logo, -> {includes :simulations}, autosave: true, inverse_of: :orders Logo在更新之前有一个回调,据我所知,Rails只会在Logo实例更新时启动。问题是,在订单创建期间,我的回调被触发。想知道为什么吗?创建订单时,流程如下: 初

我有两个模型,一个标志可以有很多订单

Class Logo
  has_many :orders, inverse_of: :logo

Class Order
  belongs_to :logo, -> {includes :simulations}, autosave: true, inverse_of: :orders

Logo在更新之前有一个
回调,据我所知,Rails只会在Logo实例更新时启动。问题是,在订单创建期间,我的回调被触发。想知道为什么吗?

创建
订单时,流程如下:

  • 初始化
    订单
    记录,设置适当的属性
  • 订单
    记录保存到数据库中
  • autosave
    钩子启动,在关联的相关记录上调用一个
    save
    ,在这种情况下,表示
    Order
    所属的
    Logo
  • 保存相应的
    徽标
    会导致执行更新前的
    回调

  • 如果您不希望发生这种情况,您可以在
    订单
    中将
    自动保存:true
    从关联中删除到
    :logo
    。但是,如果在创建
    订单
    时必须更改
    徽标
    的其他属性,则您需要在
    订单
    中的其他代码/回调中说明这一点

    并非完全相同的问题,但可能与以下问题相关:谢谢,我已经阅读了有关此问题的内容,似乎和上面描述的应用程序的逻辑有关。似乎是一个很好的解释。然而,我对一件事表示怀疑:所有与Order#create相关的数据库操作都发生在一个事务中。其中,首先我看到SQL
    插入徽标
    ,然后(由另一个回调触发)
    更新徽标集
    。是否是触发器导致在更新前触发