Ruby on rails对模型,视图和控制器名称使用单数和复数约定。这非常好,因为可能有一个名为user
的模型和一个名为users
的控制器。这适用于几乎每个单词,例如用户,树,书,所以每个单词都有一个s来形成复数。
然而,那些不仅需要用s来形成复数的单词,例如以字母“y”结尾的单词呢?例如,城市和城市? rails是否知道差异,或者我是否需要编写city
和citys
,即使它在语法上是错误的?
答案 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