2008 年 7 月 6 日,星期日

前沿体验(或 Edge Rails 的新增功能)#3

Chu Yeow 发布

最近 Edge Rails 中没有什么值得注意的大更改或功能,因此,这次我会让您仔细研究一下 Rails 提交日志 中我未指出的所有错误修复或小更改。ActionPack 重构和多线程工作以及 ActiveModel 中的一些活动中有一些在进行中的工作,但还没有真正的具体成果(还正在进行中)。

和往常一样,请务必在评论中留下任何建议和批评。

使用脚本/服务器的 Thin 支持

现在,script/server 将检查 Thin 的可用性并使用 Thin。如果您使用 Thin 作为生产服务器(并在开发时想要运行相同的 Thin),这样做非常方便。首先,必须将 config.gem 'thin' 添加到 environment.rb 中才能使其正常工作。

此补丁是由 fluxin 的一位成员贡献的。

变更集

可以通过变格规则自定义 String#humanize

String#humanize 核心扩展方法用于转换其中包含下划线的字符串,通常是表列名,以形成可轻松阅读的文本。例如:

"actor_salary".humanize
=> "Actor salary"
"anime_id".humanize
=> "Anime"

不过,当您使用传统表或简单地以“非人性”形式命名列名(例如“act_sal_money”,这实际上是“Actor salary”,但会将 #humanize-d 转换为“Act Sal Money”)时,有时这种方法并不是很管用。

现在,您可以指定自定义变格规则(就像您对复数/单数/不规则/不可数变格规则执行的操作一样)

Inflector.inflections do |inflect|
  inflect.human /_cnt$/, '\1_count'
  inflect.human 'act_sal_money', 'Actor Salary'
end

请注意,您还可以使用上述正则表达式来将“click_cnt”之类的列转换为“Click count”。

感谢 Dan MangesPascal Ehlert 提供此补丁。

变更集

允许使用哈希指定针对多表的条件。

Pratik 对 ActiveRecord 提交了一个微小的(但非常有用的)更改,它允许您在哈希中指定对联接表的条件。一个示例可以更好地说明这一点

Anime.all(
  :joins => :character,
  :conditions => {
    :active => true,
    :characters => { :gender => 'female' }
  }
)

上述 ActiveRecord 查询将找到所有“active”动漫及其“female”角色。

变更集

Outro

本周的前沿体验到此结束 - 请告诉我,您是否希望看到更多有关即使是最小的错误修复和更改的文章,而这正是本周文章中没有提到的。