Проблема перегиба в Ruby on Rails - PullRequest
4 голосов
/ 13 января 2011

Я использую Ruby on Rails для создания веб-сайта для игры, в которую я играю.

У меня есть модель User и модель Starbase. Отношения, которые я пытаюсь установить, примерно так

class User < ActiveRecord::Base
  has_many :starbases
end

class Starbase < ActiveRecord::Base
  belongs_to :user
end

Однако, когда я открываю скрипт / консоль и пытаюсь получить доступ к пользовательским базам звезд, это выдает мне ошибку: NameError: uninitialized constant User::Starbasis.

Кажется, что это проблема с перегибом, и рельсы не правильны во множественном числе.

Я пытался добавить это в inflections.rb в папке intializers:

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

но это все равно не решает проблему. Кто-нибудь может дать совет, как заставить это работать?

Cheer

Eef

Ответы [ 2 ]

5 голосов
/ 13 января 2011

Вы пытались добавить строку для обратного перегиба (т.е. "единственное число"):

 inflect.singular "starbases", "starbase"

Я попробовал ваш пример в своей консоли, и именно сингуляризация вызвала проблемы, а не наоборот,Я не уверен, исправит ли это другие проблемы (например, маршруты), но это должно исправить простые вещи (я думаю).

0 голосов
/ 15 октября 2015

Небольшой трюк, который я выбрал, чтобы дважды проверить, как 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

...