Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我可以在仅在更新时触发的观察器中进行after_commit回调吗?_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 我可以在仅在更新时触发的观察器中进行after_commit回调吗?

Ruby on rails 我可以在仅在更新时触发的观察器中进行after_commit回调吗?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,ActiveRecord包含了一个after_commit回调,这很好,但是在这种情况下,似乎没有办法让它只在更新时生效,而不在创建时生效,反之亦然 有没有办法让这种行为发生?类似于 def after_commit return unless self.was_just_updated # ..... end 答案是 def after_commit return if created_at == updated_at # ..... end 未经测试,但您可能希望在您定义

ActiveRecord包含了一个after_commit回调,这很好,但是在这种情况下,似乎没有办法让它只在更新时生效,而不在创建时生效,反之亦然

有没有办法让这种行为发生?类似于

def after_commit
  return unless self.was_just_updated
  # .....
end
答案是

def after_commit
  return if created_at == updated_at
  # .....
end

未经测试,但您可能希望在您定义的观察者类中尝试此操作,例如更新后的
,或者在创建后不定义
(或者将其置为空),或者您的意思是,您根本不希望观察者在创建时做出反应,谢谢。实际上,我在键入后意识到,我可以检查
已创建的\u at==已更新的\u at
,它在创建时始终为真,在更新时始终为假。@244an但这些操作将在事务关闭之前执行。交易结束后我需要它。