嗨,我是 Petrik,我将为大家带来 Rails 世界的最新消息。
对于批查询(WHERE IN (…ids…)),不再指定 id 的长列表,相反,活动记录将在范围内进行迭代(WHERE id >= num1 AND id < num2)。
使用CONCURRENTLY创建索引时,可能会得到无效的索引。现在,可以询问索引是否有效。
添加对 PostgreSQL 排他约束的支持
这将 Active Record 的迁移 / 架构转储扩展到支持 PostgreSQL 排他约束。
为 ActiveSupport::Cache::Store#fetch_multi 添加 :force 支持
设置force: true会强制缓存“未命中”,也就是说,即使有缓存值,我们也将其视为不存在。#fetch_multi 现在支持所有 #fetch 选项。
之前,在保存记录时,Active Record 将执行一个额外的查询,以检查具有唯一性验证的每个属性的唯一性,即使该属性没有更改。
如果数据库有对应的唯一索引,那么这个验证对于持久记录永远不会失败,我们可以安全地跳过它。
Notifications::Fanout 的速度更快,更安全
这些更改旨在改进 ActiveSupport::Notifications::Fanout。它应该让订阅 / 取消订阅正在传输的主题更安全。除了事件驱动,在所有情况下,它也快得多。
从 strip_tags 返回的字符串都被正确标记为 html_safe?
由于从 strip_tags 返回的字符串不包含 HTML 元素,并且已经对基本实体进行了转义,因此,可以安全地将其原样作为 PCDATA 包含在 HTML 内容中。将它们标记为 html-safe 可避免在渲染期间将它们连接到 SafeBuffer 时对实体进行二次转义。
在创建新的 Rails 应用程序时,可以使用 –skip-* 选项来禁用框架。升级到 Rails 的新版本后,可以通过运行 bin/rails app:update 来更新所有配置。此更改确保禁用框架在升级后保持禁用状态。
默认启用 MemCacheStore 和 RedisCacheStore 的连接池
使用 单个池选项,缓存存储可以启用连接池。此选项现在对于 MemCacheStore 和 RedisCacheStore 默认为 true。
为 MessageVerifier 和 MessageEncryptor 构造函数添加 :urlsafe 选项
MessageVerifier 和 MessageEncryptor 构造函数现在接受 :urlsafe 选项。启用后,此选项可确保消息使用 URL 安全编码。
所有批处理方法 现在可以 以降序调用。此变更在没有区块的情况下调用时向 in_batches 添加了此功能。
以前,如果数据库存在但尚未填充表,db:prepare 将运行所有迁移。
现在,db:prepare 将加载架构,然后运行任何剩余迁移,以使数据库达到状态。
自上次以来,84 位 Contributors 为 Rails 做出了贡献。和往常一样,有太多变更无法一一介绍,但您可以在 此处查看所有变更。下期再见!