大家好,星期五快乐!希望你们周末能有一些时间放松一下😎
Vipul 在这里,带来本周 Rails 的最新更新。让我们深入了解一下。
允许 ActiveRecord::Base#pluck 接受哈希值
此更改为 ActiveRecord::Base#pluck
添加了接受哈希值的支持。
# Before
Post.joins(:comments).pluck("posts.id", "comments.id", "comments.body")
# After
Post.joins(:comments).pluck(posts: [:id], comments: [:id, :body])
这也适用于 .pick
,它使用 .pluck
实现。
修复冒号 n_plus_one_only 模式中的子关联加载
冒号 n_plus_one_only 模式中的严格加载旨在防止深度遍历关联时的性能问题。它允许 Person.find(1).posts
,但不允许 Person.find(1).posts.map(&:category)
。此修复避免了当 person.posts.first
急切加载整个关联而不是允许用户管理子关联时发生的意外情况。
person = Person.find(1)
person.strict_loading!(mode: :n_plus_one_only)
# Before
person.posts.first
# SELECT * FROM posts WHERE person_id = 1; -- non-deterministic order
# After
person.posts.first # this is 1+1, not N+1
# SELECT * FROM posts WHERE person_id = 1 ORDER BY id LIMIT 1;
将 save_and_open_page 助手添加到 IntegrationTest
save_and_open_page
是一个 capybara 助手,允许开发者在测试中的任何给定点检查页面的状态。此更改添加了 save_and_open_page
助手支持,以允许在系统测试中使用它们。
将 devcontainer.json 更改为转发项目的已用端口
当前生成的 devcontainer.json
文件不会转发项目所需的端口,因此我们可能需要在通过 devcontainer
运行时手动更改它以访问该项目。此 PR 默认添加了对该项目的所需转发。
在使用 Javascript 创建项目时,将 node 和 yarn 添加到 devcontainer
当前,在使用 javascript(例如 –javascript=esbuild)创建 rails 项目时,devcontainer 中既不会添加 node 也不会添加 yarn。此更改在需要时添加了这两者。
修复 idle-detection 中的功能策略中的错别字
此更改修复了功能策略 idle-detection
中的一个小错别字,而不是 idle_detection
,这是导致此前无法应用此策略的原因。
你可以在 此处 查看更改的完整列表。
上周,有 17 位贡献者 为 Rails 代码库做出了贡献!
下期再见!
订阅以获取通过邮件发送的更新。