2024年7月26日,星期五

Model Missing Attributes、SQLite Immediate Transactions 以及默认的 CVV/CVC 参数过滤

作者:zzak

你好,我是 zzak。本周时间较短,但我们还是来看看吧。

弃用 Hash#except 核心扩展
Rails 8.0 将只支持 Ruby 3.1 或更高版本。Ruby 3.0 中已原生添加了 except 方法,因此这部分代码现在已失效。

引入 ActiveModel::AttributeAssignment#attribute_writer_missing
为实例提供机会,以优雅地处理未知属性的赋值。

class Rectangle
  include ActiveModel::AttributeAssignment

  attr_accessor :length, :width

  def attribute_writer_missing(name, value)
    Rails.logger.warn "Tried to assign to unknown attribute #{name}"
  end
end

rectangle = Rectangle.new
rectangle.assign_attributes(height: 10)
  # => Logs "Tried to assign to unknown attribute 'height'"

将“cvv”和“cvc”作为默认参数添加到新应用中,以进行过滤。
对于新应用,此 PR 将 cvvcvc 添加到 ActiveSupport::ParameterFilter 的默认值中。

确保 SQLite 事务默认使用 IMMEDIATE 模式
此 PR 更新了 SQLite 适配器,在可能的情况下使用 IMMEDIATE 模式,以提高并发支持并避免忙碌异常。

您可以在 此处 查看所有更改。 上周有 15 位贡献者 为 Rails 代码库做出了贡献!

下次再见!

订阅以通过邮件获取这些更新。