2021年11月7日,星期日

委托类型的嵌套属性、性能改进以及更多!

由 robin850 发布

大家好!我是 Robin,带来 Ruby on Rails 的最新消息。

支持为委托类型 (delegated types) 使用 accepts_nested_attributes_for
Rails 6.1 引入了委托类型,以简化处理某些多态关系。这个拉取请求使得在这些类型上使用 accepts_nested_attributes_for 变得轻而易举。

在 MySQL 中使用带 GROUP BY 和 HAVING 子句的嵌套查询进行 UPDATE
由于 MySQL 不支持带 GROUP BYHAVING 子句的 UPDATE,此补丁通过依赖子查询来修复这种情况。一个 类似的补丁 已经合并,用于处理 DELETE 查询。

对不安全重定向抛出特定错误
Rails 7.0 会阻止重定向到当前主机以外的其他主机,除非你明确要求。在不安全重定向的情况下,会抛出一个 ArgumentError。现在,该错误更加具体,允许你依赖 rescue_from 块来处理这种情况。

添加 url_from 方法来检查 URL 是否为内部 URL
与前一个补丁一致,控制器中提供了一个新的 url_from 方法,用于检查 URL 是否为内部 URL,从而简化了在 URL 非内部时提供备选方案的方式。

改进 Active Job 测试助手错误消息
这是那种让生活更轻松的小改动。 assert_enqueued_withassert_performed_with 的错误消息已得到改进,以便在断言失败时更容易进行调试。祝你测试愉快!

优化 ActiveSupport::CurrentAttributes 方法生成
看到性能优化总是令人欣喜的。这个补丁是关于继承自 ActiveSupport::CurrentAttributes 的类的生成方法的。这里的诀窍是将代码作为字符串生成,而不是依赖于闭包。

自上次以来,有 13 位贡献者 为 Rails 贡献了代码。所有更改可以在 这里 查看。下周再见!