大家好,我是zzak,带来上周 Rails 的最新变动。
此版本包含大量错误修复,务必升级!您可以在此处阅读完整的更改摘要。
这解决了 MySQL 中潜在的查询操纵漏洞。
在使用 config.active_record.writing_role(:all) 时,如果 pool_config 为 nil,现在会引发一个有用的异常。
在 Active Record 中引入加密后,又新增了几项新功能和一项错误修复!
此 PR 消除了在使用 with_all_variant_records 和 with_attached_* 作用域时 Active Storage 中的 N+1 查询。
之前在使用 strict_loading 时存在一个错误,即预加载不会通过关联传播。
之前在生成新的 Rails 应用程序时,package.json 会为所有 npm 依赖项硬编码字符串“6.0.0”。现在它会使用生成应用程序的 Rails 版本。
这允许通过“expires_in”参数或通过设置“config.active_storage.urls_expire_in”的默认值来使 Active Storage 中的签名 blob ID 的 URL 过期。
此 PR 为使用 Google Cloud Storage 服务的上传添加了设置默认“cache_control”标头的功能。
通过使用 FFmpeg 的内置功能,Active Storage 现在可以为视频生成更好的缩略图。这些参数也在后续 PR中变得可配置!
您应该直接在附件上调用这些方法,而不是在关联上。
您可能熟悉实例方法 Model#update!,但现在您可以在类上执行此操作了!
这修复了具有大量记录的反向关联的一个巨大的性能 bug。
这项生活质量改进适用于从 RailsUJS 迁移到 Turbo 的应用程序,其中两者都存在于代码库中,以便轻松区分哪个应该处理表单。