2023 年 4 月 7 日星期五

新的会议、新的 Action Mailer 回调以及更多内容!

由 Greg 发布

嗨,我是 Greg,我来向你们介绍关于 Ruby on Rails 的最新消息。

来自 Rails 基金会令人振奋的新闻!首届世界 Rails 会议即将召开!10 月 5 日和 6 日,在荷兰阿姆斯特丹加入社区,参加主题演讲、技术会议以及所有关于 Rails 的内容。包含门票和征集论文的网站将于近日上线!您可以 在此 阅读公告。

#dup 中重置复合主键
此请求确保当对 ActiveRecord::Base 子类的实例调用 #dup 时重置复合主键。

例如

class TravelRoute < ActiveRecord::Base
  self.primary_key = [:origin, :destination]
end

route = TravelRoute.new(origin: "NYC", destination: "LAX")
route.dup # => #<TravelRoute origin: nil, destination: nil>

确保版本低于 7.1 的迁移在使用 create_table 时使用旧索引名称
47753 的后续补充,确保较旧版本的 Active Record 使用旧索引名称,而不是新的截断索引名称。

正确转储 MySQL 8.0.16+ 的检查约束
如果您使用的是 MySQL 8.0.16+,并且您的数据库包含具有检查约束的表,那么转储架构时将去除约束的第一个和最后一个字符。这使得在具有 :ruby 架构格式的 MySQL 8.0 数据库中使用检查约束成为不可能,因为转储后无法重新导入它们。此请求中的更改修复了此问题。

仅在非复合时默认选择主键
以前,当谓词生成器中处理的关系没有选定值时,它会求助于选择模型的主键。在单列主键情况下,这往往会很好用。在复合键情况下,这可能会导致尝试将单个属性与一组属性进行比较,从而生成格式错误的 SQL。此请求添加的检查会通过在默认情况下升高到复合主键时引发错误来防止任何代码尝试这样做。目前,用户可以自行构建这些查询。

为 Action Mailer 添加 *_deliver 回调
此请求为 Action Mailer 添加了传递回调(例如 before_deliverafter_deliveraround_deliver)。这样做的好处是,它允许在 ActionMailer::Base 的实例上下文中(而不是在 Mail 对象中操作)执行类似于传递观察器/拦截器的行为。

Active Job 详细记录
为 Active Job 添加了一个 verbose_enqueue_logs 配置选项,以在日志中显示后台作业加入的调用者,以便于调试。仅在新应用程序和已升级的应用程序中启用此选项,不得在生产环境中建议使用,因为它依赖于 Ruby 的 Kernel#caller,而这相当慢。

有一些与文档相关的更改我未提及,您可在此查看所有更改列表 这里
上周,我们有 21 位贡献者 为 Rails 代码库做出贡献!

下次再见!

订阅,以便通过邮件收到这些更新。