嗨,我是Greg,为您带来 Ruby on Rails 的最新消息。
我们有好消息来自 Rails Foundation!第一届 Rails World Conference 即将举行!10 月 5 日和 6 日,在荷兰阿姆斯特丹,与社区一同参加主题演讲、技术会议以及所有与 Rails 相关的内容。包含门票和 CFP 的网站即将上线!您可以在这里阅读公告。
重置 #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>
使用 create_table 时,确保 7.1 之前的迁移使用旧的索引名称
这是对47753号的补充,它确保旧版本的 Active Record 将使用旧的索引名称,而不是新的截断名称。
为 MySQL 8.0.16+ 正确转储检查约束
如果您正在使用 MySQL 8.0.16+ 并且您的数据库包含带有检查约束的表,那么在转储模式时,约束的第一个和最后一个字符将被剥离。这使得无法在具有 :ruby 模式格式的 MySQL 8 数据库中使用检查约束,因为一旦它们被转储,就无法重新导入。此拉取请求中的更改修复了该问题。
仅在非复合主键时默认为选择主键
传统上,当谓词构建器处理的关系没有选定的值时,它会回退到选择模型的.主键。在单列主键的情况下,这通常效果很好。在复合键的情况下,这可能导致尝试将单个属性与属性列表进行比较,从而构建格式错误的 SQL。此拉取请求添加的检查通过在复合主键情况下默认选择主键时引发错误来阻止任何代码尝试这样做。目前,用户可以自己构建这些查询。
为 Action Mailer 添加 *_deliver 回调
此拉取请求为 Action Mailer 添加了 deliver 回调(例如 before_deliver、after_deliver、around_deliver)。其好处在于,它允许在 ActionMailer::Base 实例的上下文中实现类似 delivery observer/interceptor 的行为,而不是仅在 Mail 对象上操作。
Active Job 详细日志记录
Active Job 中添加了一个 verbose_enqueue_logs 配置选项,用于在日志中显示后台作业入队的调用者,以帮助调试。对于新安装和升级的应用程序,它仅在开发环境中启用。不建议在生产环境中使用,因为它依赖于 Ruby 的 Kernel#caller,后者相当慢。
我没有涵盖很多文档相关的更改,您可以在这里查看所有更改的列表。
上周,我们有21 位贡献者为 Rails 代码库做出了贡献!
下次再见!
订阅以通过邮件获取这些更新。