2022年10月21日,星期五

Active Record 改进、性能提升和错误修复!

发布者:Emmanuel Hayford

大家好!Emmanuel 又来了,带来了一些 Rails 的更新。

如果记录之前已被销毁,则不要再次触发 destroy 的 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 不同。 verbatim 来自提交消息。 😎

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

21 位贡献者在本周改进了 Rails。下周我们将为您带来更多更新!

请保重。

订阅以通过邮件获取这些更新。