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 来选择不使用 SameSite cookie。

改进生成器隐含选项处理 AppGeneratorPluginGenerator 的隐含选项已得到一些改进:现在会在您的 shell 中报告隐含选项。冲突选项将引发错误。元选项和 --no-* 选项的报告更加精确。

在 ActiveRecordValidations 文档中添加使用 I18n 格式化完整消息部分 Rails 文档获得了一些关注。现在 Active Record Validations 文档中增加了一个部分,演示如何通过 I18n 帮助格式化完整的验证消息。

为 job 生成器添加 –parent 选项以指定 job 的父类 现在 job 生成器中有一个超类选项。可以通过 bin/rails g job process_payment –parent=payment_job 来生成 class ProcessPaymentJob < PaymentJob; end

为 datetime_local_field 添加 include_seconds 选项 根据 时间输入元素,浏览器在格式化时间但不包含秒时会渲染出不同的效果。此 PR 通过 include_seconds: false 添加了一个选项来省略格式化时间中的秒部分。

为 PostgreSQL 添加 timestamptz 作为时区感知类型 此前,Postgres 适配器中添加了对 timestamptz 类型的支持,这在某些情况下会导致问题,因为新添加的 timestamptz 没有被视为时区感知属性。此 PR 修复了 Postgres 用户遇到的问题。

“开箱即用”支持公共表表达式 您现在可以使用模型上的 .with 查询方法,通过公共表表达式构建复杂的查询。.with 允许使用 Active Record 关系,而无需手动构建 Arel::Nodes::As 节点。

添加 ActiveRecord::Base::generates_token_for 通过此 PR,signed_id 摆脱了 token 生成。现在 token 生成直接与记录关联,可以轻松跟踪记录状态。

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

自上次以来,已有 32 人为 Rails 贡献了代码。下次再见!