4

我正在使用 Ruby on Rails 为我玩的游戏创建一个网站。

我有一个User模型和一个Starbase模型。我试图建立的关系是这样的

class User < ActiveRecord::Base
  has_many :starbases
end

class Starbase < ActiveRecord::Base
  belongs_to :user
end

但是,当我打开脚本/控制台并尝试访问用户 starbase 时,它​​给了我一个错误:NameError: uninitialized constant User::Starbasis.

似乎这是拐点的问题,而 rails 并没有使 starbase 复数正确。

我尝试将其添加到 intializers 文件夹中的 inflections.rb 中:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural 'starbase', 'starbases'
end

但它仍然不能解决问题。任何人都可以就如何使这项工作提供建议吗?

欢呼

伊夫

4

2 回答 2

5

您是否尝试过为逆屈折添加一条线(即“单数”):

 inflect.singular "starbases", "starbase"

我在控制台中尝试了您的示例,导致问题的是单数化,而不是相反。我不确定这是否解决了其他问题(如路线),但它应该解决简单的问题(我认为)。

于 2011-01-13T17:52:34.637 回答
0

我学会了一个小技巧来仔细检查 Active Support 如何使我的类名称和/或模块名称单数化或复数化。

让您的 Rails 应用程序服务器运行并在新选项卡中输入 . 进入您的 Rails 控制台rails console。在那里,您可以轻松地仔细检查您姓名的正确样式。

很长的路要走 ActiveSupport::Inflector.pluralize "fish" # => "fish"

短途 "fish".pluralize # => "fish"

您可以在此处找到更多示例

https://github.com/rails/rails/blob/master/activesupport/test/inflector_test_cases.rb

于 2015-10-15T02:02:12.980 回答