2022 年 7 月 15 日,星期五

Rails 安全版本、处理生成器选项改进等...

作者:Emmanuel Hayford

嗨!Emmanuel 在此汇报上周 Rails 的更新。

Rails 版本 7.0.3.1、6.1.6.1、6.0.5.1 和 5.2.8.1 已发布!几天前,Rails 发布了版本 7.0.3.1、6.1.6.1、6.0.5.1 和 5.2.8.1。这些是安全更新,会影响在 Active Record 模型上使用序列化属性的应用程序。这些更新(CVE-2022-32224 识别出的)涉及在 Active Record 中使用 YAML 序列化列时可能出现的引发的 RCE。

允许选择退出 SameSite cookie现在,你可以通过传递 same_site: nil 选择退出在 cookie 中使用 SameSite

提高生成器隐式选项处理 AppGeneratorPluginGenerator 隐式选项获得了一些改进:隐式选项现在会显示在你的 shell 中。存在冲突的选项会引发错误。元选项和 -no-* 选项的报告更精确。

在 ActiveRecordValidations 指南中添加使用 I18n 格式化完整消息的部分Rails 指南收到一些好评。Active Record Validations 指南中现在有一个部分演示如何借助 I18n 格式化完整验证消息。

为作业生成器添加 -parent 选项以指定作业的父类作业生成器中现在有一个超类选项。可以执行 bin/rails g job process_payment -parent=payment_job 以获取 class ProcessPaymentJob < PaymentJob; end

为 datetime_local_field 添加 include_seconds 选项根据输入元素类型time,如果不带秒部分,浏览器渲染的时间会不同。此 PR 添加了一个选项,可使用 include_seconds: false 省略格式化时间中的秒部分。

添加 timestamptz 作为 PostgreSQL 的时区相关类型以前在 Postgres 适配器中添加了对 timestamptz 类型的支持,这在某些情况下会引发问题,因为新添加的 timestamptz 不被视为时区相关属性。此 PR 为 Postgres 用户修复了此问题。

开箱即用,添加通用表表达式支持你现在可以使用模型上的 .with 查询方法,使用通用表表达式构建精细的查询。.with 允许使用 Active Record 关系,无需手动构建 Arel::Nodes::As 节点。

添加 ActiveRecord::Base::generates_token_for 使用此 PR,signed_id 无需再生成令牌。令牌生成现已直接与记录相关联,从而轻松跟踪记录状态。

添加季度到日期/时间 DateAndTime::Calculations 获取新方法 quarter,它将返回接收者日历年的季度。以下是一些示例:Date.new(2010, 12, 25).quarter # => 4Date.new(2010, 4, 12).quarter  # => 2

自上次以来,有 32 人为 Rails 做出了贡献下一次再见!