2023年6月9日,星期五

本周 Rails - 2023 年 6 月 9 日

发布者:Emmanuel Hayford

大家好!我是Emmanuel,正在火车上前往卡托维兹!过去几周,Rails 代码库发生了很多变化!我们一起来看看其中的一些吧,好吗?

创建类级别的 #with_routing 辅助方法 现在可以在类级别调用 `with_routing` 辅助方法。当在此级别调用时,路由将在每次测试之前设置,并在每次测试之后重置。例如:

class RoutingTest < ActionController::TestCase
      with_routing do |routes|
        routes.draw do
          resources :articles
          resources :authors
        end
      end
      def test_articles_route
        assert_routing("/articles", controller: "articles", action: "index")
      end
       def test_authors_route
        assert_routing("/authors", controller: "authors", action: "index")
      end
    end

允许从 schema 派生复合主键 启动包含复合主键的 schema 的应用程序时,将不再发出警告,并且 `ActiveRecord::Base#primary_key` 的值也不会再设置为 `nil`。

例如,考虑一个名为 `travel_routes` 的表以及一个对应的 `TravelRoute` 模型。在这种情况下,`TravelRoute.primary_key` 的值将自动派生为 `["origin", "destination"]`,如下面的示例所示:

create_table :travel_routes, primary_key: [:origin, :destination], force: true do |t|
     t.string :origin
     t.string :destination
   end
   class TravelRoute < ActiveRecord::Base; end

在数据库相关的异常中存储 connection_pool 当适配器抛出异常时,包含 `connection_pool` 是有益的,因为它提供了额外的上下文。此上下文包括有关触发异常的连接的信息,以及有关涉及的角色和分片(shard)的详细信息。

将 engine 的 draw_paths 添加到 app 通过将引擎的 `draw_paths` 添加到应用程序路由集,应用程序获得了访问和使用引擎路径中定义的路由文件的能力。

改进 mime 类型中的带引号参数 `Mime::Type` 现在支持处理带参数的类型,确保正确处理引号。在解析 `accept` 标头时,会保留 'q' 参数前面的参数,如果找到匹配的 mime 类型,则会相应地使用它。为了保持现有功能,已实现了一个回退机制来搜索不带参数的媒体类型。

支持使用复合主键和多列排序进行分批处理 `find_each`、`find_in_batches` 和 `in_batches` 方法现在支持多列排序。当这些方法在具有复合主键的表上使用时,可以为每个单独的主键指定升序或降序。示例:

Person.find_each(order: [:desc, :asc]) do |person|
      person.party_all_night!
    end

今天的分享就到这里。在过去七天里,我们有幸见证了 30 位 了不起的个人为 Rails 框架做出了贡献!

下次再见!

每周为您提供来自 Rails 的有趣提交、拉取请求等方面的内部快讯。

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