2025 年 10 月 17 日,星期五

CTE 中绑定 SQL 字面量、新教程等!

由 vipulnsward 发布

你好,我是 Vipul!。让我们来探索本周 Rails 代码库的变更。

Rails 8.1.0.rc1 已发布! Rails 8.1.0 即将到来!快来尝试最新候选版本并报告你发现的任何 bug!

最新的附加教程现已在 Rails 教程页面上线!
在本指南中,您将学习如何为已开始的电子商务演示应用添加心愿单功能。请在本站的 Rails 教程页面查找此教程及更多内容:https://rubyonrails.cn/docs/tutorials

为 CTE 添加绑定 SQL 字面量的支持
当使用绑定值参数创建 SQL 字面量时,Arel.sql 返回 Arel::Nodes::BoundSqlLiteral 的实例,该实例目前不受 #build_with_expression_from_value 的支持。此 PR 更新了该方法以同时接受 Arel::Nodes::SqlLiteralArel::Nodes::BoundSqlLiteral

默认在 bin/bundler-audit 中添加咨询性数据库更新
此 PR 更新了 bin/bundler-audit 脚本以包含 --update 选项。

启动 bin/rails console 时显示帮助提示
Rails console 中的 help 命令显示了哪些 Rails 特定的命令可用以及它们的作用。

bin/rails dbconsole (其中数据库客户端显示帮助提示) 类似,在打开 bin/rails console 时显示如何使用帮助的提示。

$ bin/rails console
Loading development environment (Rails 8.1.0.beta1)
Type 'help' for help.
example(dev):001>

为 has_secure_token 添加 prefix 选项以改进 token 识别
has_secure_token 添加了一个可选的 :prefix 参数,该参数会在生成的 token 前添加一个字符串,从而使 token 类型在日志、调试会话和错误消息中易于识别。

# Before:
  user.auth_token # => "pX27zsMN2ViQKta1bGfLmVJE"
  user.reset_token # => "tU9bLuZseefXQ4yQxQo8wjtB"

# After:
  has_secure_token :auth_token, prefix: "auth_"
  has_secure_token :reset_token, prefix: true

  user.auth_token # => "auth_pX27zsMN2ViQKta1bGfLmVJE"
  user.reset_token # => "reset_token_tU9bLuZseefXQ4yQxQo8wjtB"

添加环境配置文件存在性检查
此拉取请求为 Rails::Application 添加了一个行为,当无法加载任何环境文件时将引发错误。

为 HTTP 错误页面添加暗黑模式
错误页面现在支持暗黑模式了!

Error pages dark mode

ActiveModel::Errors#messages_forActiveModel::Errors#full_messages_for 方法添加错误类型支持
ActiveModel::Errorsmessages_forfull_messages_for 方法添加了 type 参数支持。

使用 collection: 渲染时,为 expires_in: 添加支持
expires_in 传递给 write_multi,以便缓存键带有过期时间进行写入。

从错误页面建议运行 bin/rails action_text:install
模仿 Active Storage 鼓励从 Action Dispatch 错误页面执行 active_storage:install 任务,当错误与缺少 Action Text 表相关时,添加类似的关于执行 rails action_text:install 任务的说明。

您可以在 这里查看所有更改的列表。
上周,我们有 34 位贡献者参与了 Rails 代码库的开发!

下次再见!

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