rails неинициализированная константа Class :: News (NameError) - PullRequest
0 голосов
/ 18 января 2020

У меня странная ошибка в Rails с ассоциацией моделей.

Существует таблица с именем "Book", и в ней много "новостей" (таблица "New"). Однако, когда я добавляю связь в модель, я получаю следующую ошибку:

rails неинициализированная константа Book :: News (NameError)

Модель книги:

class Book < ApplicationRecord
  belongs_to :editor
  belongs_to :author, optional: false
  has_many :news, dependent: :destroy
end

Новая модель:

class New < ApplicationRecord
  belongs_to :book
end

Интересно, является ли имя "new" проблемой для соглашений об именах в rails?

Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 18 января 2020

Да New действительно плохой выбор имен. Главным образом потому, что это некорректно.

news существительное ,
множественное число по форме, но единственное по конструкции, часто атрибутивное
- https://www.merriam-webster.com/dictionary/news

Форма единственного и множественного числа news - это news . Новое на самом деле является прилагательным, и названия вашей модели всегда должны быть существительными (или составными существительными), поскольку они представляют вещи в логах бизнеса c вашего приложения. На самом деле Rails правильно корректирует это при поиске константы, которая объясняет, почему вы получаете uninitialized constant Book::News.

Просто измените имя вашего класса и файла на правильную форму (news.rb и News) и используйте словарь, если вы не уверены в множественности или орфографии, так как это сэкономит вам много времени в таких основах, как rails.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...