大家好!我是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 的有趣提交、拉取请求等方面的内部快讯。
订阅以通过邮件获取这些更新。