大家好!我是 Eugene,为您带来上周合并到 Rails 中的若干有趣改进。
Rails 6.0 中即将支持 按环境划分的凭证,但是添加新环境并不总是容易的:如果你的应用程序在启动期间访问凭证,则 credentials:edit
命令将无法运行,这将反过来阻止你添加缺失的凭证。糟糕!
当启用了预编译语句后,使用超出范围的值查询整数列会导致基础数据库驱动程序出错。为了解决这个问题,Active Record 过去会拒绝运行查询并总是返回负结果,例如 ActiveRecord::RecordNotFound
。
此方法适用于简单查询,但对于更复杂的查询,它给出的结果不正确。现在,超出范围的值将被转换为“不可能”谓词(例如 WHERE 1=0
),这样可允许查询运行且不会报错,同时还能生成正确的结果。
说到大数字:在 18 个月之前发起的这个 Pull Request 是 Rails 代码库中的第 30,000 个。🎈
存储在数据库 TIME
列中的值会被映射到 Ruby 中的 Time
对象。后者包含日期部分,而前者没有。为了解决此差异,始终会分配一个默认日期:2000 年 1 月 1 日。
当将 time_select
帮助器生成的多参数时间值分配给一个属性时,它的年份会被设为 1970,导致根据值的来源生成了不同的结果。
凭借此修复,时间属性已完全加入了 21 世纪。🖖
Date#advance
此方法会不必要地复制其选项散列。现在,它既不复制,也分配了更少的内存。
自上次发布以来,已有 28 人 为 Rails 做出了贡献;你可以在 此处 查看 完整变更列表。
下周见!