2015年5月30日,星期六

本周 Rails:Enumerable#pluck,SQLite Collation 等等

由 vipulnsward 发布

####

大家好!

我是 Vipul,很高兴地向大家汇报,我正处于一个闷热的夏天 😎。给自己倒杯饮料 🍹,坐下来,放松一下,尽情享受我们即将分享的这些 最新 的更新。

本周 Rails 贡献者

本周共有 43 位贡献者帮助 Rails 变得更加出色。请查看 Pulse 页面 了解更多详情。

新功能

Enumerable#pluck

Enumerable#pluck 方法已在 master 分支上线,提供了与 Active Record 的 #pluck 类似的功能。

这使得像 [{ name: "David" }, { name: "Rafael" }, { name: "Aaron" }].pluck(:name) 这样的用法可以获取所有人的名字。非常方便!

改进

SQLite 中的 Collation 支持

Active Record 现在支持为 SQLite 字符串列指定 collation 函数

Attributes API 中的默认 proc

通过新的 Attributes API,现在可以为属性指定一个 proc 作为默认值,这允许运行时生成默认值,例如 attribute :year, :integer, default: -> { Time.now.year }。另请参阅这些 相关更改

使用 strict: :default 保留 MySQL 的 sql\_mode

默认情况下,Rails 会使用 sql_mode=STRICT_ALL_TABLES 来覆盖 MySQL 的 sql_mode 设置,以防止数据丢失。虽然这很有帮助,但它有一个不幸的副作用,那就是会覆盖任何用户自定义的设置。

如果您希望自行管理此设置,现在可以在 连接的配置中指定 strict: :default,Rails 将会保留您的 sql_mode 设置。(但仍然强烈推荐使用 STRICT_ALL_TABLES!)

已弃用

弃用 render nothing: true

如果您正在使用 render nothing: true,您应该开始将其替换为 head :ok,它具有相同的功能并且更具语义。此选项将在 Rails 5.1 中被永久移除。

弃用 Relation#uniq

Relation#uniqArray#uniq 之间的表面相似性一直是一个令人困惑的来源,这导致了 Relation#distinct 的引入,它能更好地传达底层发生了什么。

最近在 #20198 上的讨论为 Relation#uniq 及其同伴 #uniq!#uniq_value 敲响了最后的丧钟。这些方法已被弃用,并计划在 Rails 5.1 中移除,因此您可能很快就需要开始使用 #distinct#distinct!#distinct_value

本周内容总结

以上是本周 Rails 的全部内容。一如既往,还有许多我们无法在此一一详述的更改,但请随时 自行查看

附注:如果您喜欢这个新闻通讯,为什么不分享给您的朋友呢? :) 如果您想参与到这个项目中,请随时联系 Godfrey – 有很多方法可以让这个新闻通讯变得更棒!