Проблема перегиба в 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

Другие вопросы по тегам