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插入徽标
,然后(由另一个回调触发)更新徽标集
。是否是触发器导致在更新前触发。