2022 年 10 月 21 日,星期五

一项ActiveRecord改进、性能提升和错误修复!

发布人:Emmanuel Hayford

Guten Tag!Emmanuel 在此再次报道,带来 Rails 的一些更新情况。

如果记录之前已销毁,则不要在销毁时再次触发 after_commit :destroy 回调 after_commit :destroy 回调总是会运行,即使记录之前已销毁。此 PR 修复了该问题。从根本上讲,我们不想在非持久的记录中调用 after_commit :destroy

允许 ErrorReporter 处理多个错误类 ErrorReporter 现在允许您一次处理多个错误类。您现在可以像下面那样处理多个错误类

Rails.error.handle(ArgumentError, TypeError) do   # 执行一些工作 end 修复ciphertext_for,针对尚未加密的值 ciphertext_for 应返回加密的属性值(即使记录未被保留),在此提交之前,这不是我们得到的,而对于非持久的记录,ciphertext_for 会返回值的明文。此 PR 修复了该问题。

避免在保存后进行不必要的序列化调用 我们在此处获得了一些性能提升:此提交将为 value_for_database 进行记忆处理,这样一来 serialize 不会在保存后第二次被调用。由于value 是真实性的唯一来源且就地更改,记忆处理会慎重检查 value 与记忆的 @value_for_database 的不同之处。提交消息中的逐字记录。 😎

允许 ActiveRecord::QueryMethods#reselect 接受哈希 此 PR 允许 ActiveRecord::QueryMethods#reselect 接收哈希值,类似于允许ActiveRecord::QueryMethods#select 接受哈希的此 PR 。

21 位贡献者改进 了上周的 Rails。我们下周会带给您更多更新!

保重。

订阅以通过邮件接收这些更新。