星期六,2015 年 5 月 30 日

Rails 本周动态:Enumerable#pluck、SQLite Collation 和更多内容

由 vipulnsward 发布

####

大家好!

我是Vipul,高兴地从持续不断的夏季灼热中报道😎。倒一杯饮料🍹,坐下来,放松一下,享受这些最新出炉的变化吧。

本周的 Rails 贡献者

本周共有 43 人为让 Rails 变得更加强大做出贡献。查看脉冲页面,了解更详细的信息。

新功能

Enumerable#pluck

Enumerable#pluck刚刚进入 master,它提供的功能与 Active Record 的#pluck类似。

这样就可以像[{ name: "David" }, { name: "Rafael" }, { name: "Aaron" }].pluck(:name)这样获取每个人的姓名。非常方便!

已改进

SQLite 中的排序规则支持

Active Record 现在支持为 SQLite 字符串列指定一个排序规则函数

Attributes API 中的默认过程

借助新的Attributes API,现在可以将一个过程指定为一个属性的默认值,这样就可以使用运行时生成的默认值,例如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

关联关系#uniq数组#uniq 之间的表面相似性一直是导致混淆的源头,因此增加了 关联关系#distinct ,此代码更好地传达了底层发生了什么。

最近 #20198 中的讨论为 relation#uniq 及其小伙伴 #uniq!#uniq_value 敲响了丧钟。这些方法已被弃用,并计划在 Rails 5.1 中移除,所以你可能需要开始使用 #distinct#distinct!#distinct_value

就是这样了

这就是本周 Rails 的全部内容。一如既往,还有更多更改我们没有空间来涵盖,但是你可以随意 亲自查看

附注:如果你喜欢这封时事通讯,为什么不与你的朋友分享?:) 如果你希望加入这个项目,请毫不犹豫地 联系 Godfrey - 有很多方法可以让你帮助提升这封时事通讯的精彩程度!