我是Emmanuel… 好久不见。我过得很好,并且有一些合并的拉取请求想和你分享。
MessageVerifier#inspect 和 KeyGenerator#inspect 不显示 secrets 如果有人在控制台中调用一个 cipher,它会暴露加密器的 secret。通过重写 inspect 方法只显示类名,我们可以防止敏感信息被意外暴露。
Active Record 在 return、break 和 throw 时提交事务 这个 PR 有很多历史。简而言之,Rails 7.1 将获得一个新的配置选项,用于定义在事务块内执行 return、break 和 throw 是否会导致事务提交或回滚。让我们看这个例子
Model.transaction do
model.save
return
other_model.save
end
当 config.active_record.commit_transaction_on_non_local_return 设置为 false 时,遇到 return 时此事务将回滚;如果设置为 true,事务将提交。
记录常见的 ActiveStorage 问题 将文件附加到 has_many_attached 关联时,默认行为是替换任何现有附件。但是,如果你想保留现有附件并添加新附件,可以通过将 Rails.application.config.replace_on_assign_to_many 设置为 false 来实现。此 PR 正确记录了此行为。
指定生成 has_secure_token 的时机 Rails 有一个 has_secure_token 方法,它使用 SecureRandom::base58 为模型生成一个 24 个字符的唯一 token。通过此 PR,可以通过 on: 选项指定在模型生命周期的哪个阶段生成 token。此 PR 确保我们可以执行类似的操作
class User < ApplicationRecord
has_secure_token on: :initialize
end
通过传递 on: :initialize,token 将在 after_initialize 回调中生成,而不是在默认的 before_* 回调中生成。
在过去的十四天里,我们有 37 位慷慨的贡献者。
今天就到这里!
每周为您提供来自 Rails 的有趣提交、拉取请求等方面的内部快讯。
订阅以通过邮件获取这些更新。