智能复数总是聪明的?

时间:2012-09-13 19:40:12

标签: ruby-on-rails model-view-controller grammar

Ruby on rails对模型,视图和控制器名称使用单数和复数约定。这非常好,因为可能有一个名为user的模型和一个名为users的控制器。这适用于几乎每个单词,例如用户,树,书,所以每个单词都有一个s来形成复数。

然而,那些不仅需要用s来形成复数的单词,例如以字母“y”结尾的单词呢?例如,城市和城市? rails是否知道差异,或者我是否需要编写citycitys,即使它在语法上是错误的?

2 个答案:

答案 0 :(得分:18)

Rails知道很多复数。它可以处理“城市”,例如:

1.9.2p318 :001 > "city".pluralize
 => "cities" 
1.9.2p318 :002 > "cities".singular
 => "city"

但是,您可能会发现它不知道的复数,也不会学习。请参阅ActiveSupport::Inflector

的文档
  

Rails核心团队已经为变形库提供了补丁   不会被接受以避免破坏遗留应用程序   这可能是依赖于错误的变形。如果你发现了   不正确的变形,并要求它为您的应用程序,你需要   自己纠正(下面解释)。

你如何自己纠正?在config/initializers/inflections.rb。例如:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural /^(.*)(l)ens$/i, '\1\2enses'
end

再次查看ActiveSupport::Inflector的文档,详细了解如何教导rails new inflections。

答案 1 :(得分:1)

对于很多常见的,它知道如何处理它。您可以通过执行以下操作在IRB中自行尝试:

require 'active_support/all'
ActiveSupport::Inflector.pluralize("city")

你将获得一个价值“城市”的字符串。您还可以按照config/initializers/inflections.rb

中列出的步骤添加和调整变形
相关问题