大家好,我是 Greg,为大家带来 Rails 的最新消息!
Rails 6.1 已发布,它拥有许多出色的功能!这些更改包括对多个数据库的改进、添加对在作业(而不是内存中)中销毁关联的支持、将错误转换为对象,以及更多功能。
此 Pull Request 将现有的 ActiveSupport::Benchmarkable 纳入 Rails 模块,以便能够从任何位置(包括后台作业)访问它。
浏览器对延迟加载图像的原生支持现在已成为官方 HTML 标准的一部分,此 Pull Request 添加了 Rails.application.config.action_view.image_loading 来配置 loading html 属性的站点范围默认配置,从而能够在不更改代码的情况下启用全站范围的延迟加载。
另一个 image_tag 更改,它引入了 Rails.application.config.action_view.image_decoding 来配置 image_tag :decoding 选项的默认值。
如果枚举方法使用 not_ 前缀,Rails 会给出一个警告,因为它可能与否定范围冲突。初始实现即使没有实际冲突也会发出警告,此更改改进了这一点,只有在存在可能导致冲突的正形式时才对负面枚举发出警告。
如果我们有 data: { disable_with: false },则自动禁用功能就会关闭,但是如果我们设置 automatically_disable_submit_tag 为 false,则会以一种意外的方式更改 disable_with 的行为,所以明确使用 disable_with: false 就会开始启用自动禁用,并使用 false 作为已禁用按钮的值。
使用此更改后,如果我们有明确的 disable_with: false,则会关闭自动禁用功能,无论 automatically_disable_submit_tag 中设置为何。
Rails 6.1 添加了 strict_loading_by_default,但这会导致固定装置的问题,因为它们是延迟加载的。为了解决此问题,此更改在加载固定装置时会忽略严格加载标记。
当上传到 S3 的文件小于配置的多部分阈值时,会出现一个错误,但此 Pull Request 已修复了该错误。
reload 默认不是 default_scoped,因为你可能正在创建一条与默认范围不匹配的记录,因此 reload 找不到该记录。但是,在对应用程序进行分片的情况下,你可能希望 reload
支持 default_scope,因为你始终拥有正确的范围
设置。
以前,您需要配置作业处理器来处理 Rails 的所有内部作业队列,但这现在不再必要了!
在 Rails 6.0 中,当 translate 帮助器收到 nil 键时,它始终返回 nil;而在 Rails 6.1 中,当 translate 帮助器收到 nil 键时,它始终引发 I18n::ArgumentError。此 PR 修复了 translate 帮助器,使其在收到 nil 键后反映 `I18n.translate` 的行为(无论是否设有默认值)。