Проблема перегиба в Ruby on Rails
Я использую 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
но это все еще не решает проблему. Кто-нибудь может дать совет о том, как заставить это работать?
одобрительные возгласы
Eef
2 ответа
Вы пытались добавить строку для обратного перегиба (то есть "единственного числа"):
inflect.singular "starbases", "starbase"
Я попробовал ваш пример в своей консоли, и именно сингуляризация вызвала проблемы, а не наоборот. Я не уверен, что это решает другие проблемы (например, маршруты), но это должно исправить простые вещи (я думаю).
Небольшой трюк, который я выбрал, чтобы перепроверить, как 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