大家好,我是 Greg,我来给你们介绍 Rails 代码库中的最新变化。
Rails 7.1 beta 版发布
Rails 7.1 的第一个 beta 版已发布!自 Rails 7.0 以来,共有 800 多位贡献者提交了五千多次提交,因此此发行版中包含了许多新功能和改进。您可以在公告中阅读有关这些更改的摘要。
忽略环境文件(模板文件除外)
为了防止意外地将机密信息泄露到代码存储库,默认的.gitignore文件从现在起将排除.env(模板文件除外)文件。
明确的 primary_key: 选项始终应在关联中优先考虑
此 Pull Request 修复了以下问题:如果关联的模型配置了 query_constraints
,则忽略 primary_key:
选项。现在, primary_key:
选项始终优先考虑,只有在没有 primary_key:
选项时,才会使用 query_constraints
来确定 association_primary_key
值。
检测活动记录事务
此 Pull Request 添加了一个新的 transaction.active_record
事件来跟踪 Active Record 托管的事务发生的时间。它在有效负载中包含连接(例如,在区分不同数据库的事务时很有用),
添加 Bun 支持
Bun 是 node.js 运行时、yarn 包管理器和 esbuild 捆绑器的替代品,它是一种新的可行选择。Bun 的主要区别特征是速度。它的速度通常比 node.js 等高出数倍。
由于大多数基本的 Rails 项目希望在此处和彼处简单地添加一些 JavaScript(但有时候希望比导入映射提供的 JavaScript 生态系统更好),因此 Bun 非常适合,并且可以轻松地被新 Rails 项目采用。
为复合主键添加专用指南
此 Pull Request 为复合主键用法添加了一个专用指南。
除了专用指南,#49218 还添加了有关在 :through
关联的连接表中使用复合主键的建议。
通过迁移帮助器支持复合外键
Rails 迁移帮助器现在支持复合主键。以下是使用它们的一些示例:
# Assuming "carts" table has "(shop_id, id)" as a primary key.
add_foreign_key(:orders, :carts, primary_key: [:shop_id, :id])
# or
add_foreign_key(:orders, :carts, column: [:cart_shop_id, :cart_id])
remove_foreign_key(:orders, :carts, primary_key: [:shop_id, :id])
foreign_key_exists?(:orders, :carts, primary_key: [:shop_id, :id])
向测试指南中添加“测试视图部分”部分
指南中添加了“测试视图部分”部分,这部分扩展了可用于继承自 ActionView::TestCase
的测试的各种工具。
添加对在添加检查约束时if_not_exists的支持。
方法 add_check_constraint
现可接受 if_not_exists
选项。如果设置为 true,那么在检查约束已存在的情况下不会引发错误。此外,在反转 remove_check_constraint
和 add_check_constraint
时,如果设置 if_exists
和 if_not_exists
选项,则会将这些选项进行转换。这有助于轻松创建幂等的、非事务性迁移。
加密:在每个属性级别支持 support_unencrypted_data
如果启用了 ActiveRecord::Encryption.config.support_unencrypted_data
,则此更改允许你在需要时替代属性的该全局设置。
在生成名称危险的属性时引发错误
生成具有名为 hash
或 save
的属性的模型应引发错误,而不是生成具有无效属性的迁移,对此拉取请求进行了处理。
你可以在 此处 查看完整的更改列表。上周有 28 位贡献者 为 Rails 代码库做出了贡献!
到下次再见!