Ruby on Rails 复数模型名称

Posted

技术标签:

【中文标题】Ruby on Rails 复数模型名称【英文标题】:Ruby on Rails Plural Model Name 【发布时间】:2011-12-15 17:56:33 【问题描述】:

我有一个代表飞行规则的域模型。飞行规则是执行飞行的规则的集合。视觉飞行规则或 VFR 就是这样一个例子。我正在尝试构建这个模型,但 Rails 坚持让 FlightRules 单数(FlightRule),而我需要它保持复数。有什么方法可以让 Rails 保持模型名称的复数形式?

【问题讨论】:

【参考方案1】:

你必须在config/initializers/inflections.rb下编辑你的inflections.rb文件

ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable %w(flight_rules)
end

【讨论】:

感谢您的快速响应!我试过同时添加flight rulesflight_rules,但Rails 仍然会生成一个奇异模型。 @Laurens :重新生成你的脚手架:rails destroy scaffold flight_rules,然后是rails g scaffold flight_rules 在添加拐点并再次生成脚手架之前,我已经破坏了脚手架,但它仍在生成一个单一的模型名称:rails generate scaffold FlightRules (...)create app/models/flight_rule.rb @Laurens :我不知道为什么,但这与您使用 CamelCase (FlightRules) 而不是 snake_case (flight_rules) 作为脚手架这一事实有关。使用rails g scaffold flight_rules 再试一次,它应该可以工作。【参考方案2】:

试试这个

rails generate scaffold FlightRules (...) --force-plural

您可以通过以下方式获得有关生成器的帮助:

rails g scaffold -h

【讨论】:

我遇到了同样的问题,我不得不使用这个--force-plural 标志来让脚手架正确创建,然后我必须添加一个不可数的变形来让我的固定装置和路线正常工作.请参阅有关变形的 SO 答案:***.com/a/8524566/806956 和此博客文章:markembling.info/2011/06/… 确保也更新您的 inflections.rb 初始化程序!【参考方案3】:

ActiveSupport::Inflector::Inflections 是你的朋友。

有一个文件config/initializers/inflections.rb,您可以对其进行编辑。该文件包含注释示例,因此添加您自己的规则应该很容易。

【讨论】:

以上是关于Ruby on Rails 复数模型名称的主要内容,如果未能解决你的问题,请参考以下文章

Ruby On Rails:用于其他语言的复数形式

覆盖rails3中模型名称的默认复数

Ruby on Rails 生成模型

ruby on rails (模型关联查询)

Ruby on rails - 两次引用同一个模型?

Rails Association Has_One 具有复数模型名称而不是单数且不工作