Имя уже используется или зарезервировано Ruby on Rails?

Я создал приложение rails с помощью следующей команды:

rails new Education

Теперь я пытаюсь создать новую модель в рельсах с помощью следующей команды:

rails generate model Education name:string

При запуске выдает следующую ошибку:

Название "Образование" либо уже используется в вашем заявлении, либо Зарезервировано Ruby on Rails. Пожалуйста, выберите альтернативу и запустите генератор снова.

Так как я только что создал новое приложение, и у меня есть только одна другая модель, мне трудно думать о какой-либо причине, по которой Rails зарезервировал бы такое имя?

Есть мысли о том, откуда возникла эта ошибка и как я могу ее обойти?

(Я попытался изменить имя на другое, и оно работает как положено. Поскольку имя действительно соответствует своему назначению, я не хочу менять его имя, если нет другого пути!)

Я использую Ruby 2.0.0 с Rails 4.0.0 и PostgreSQL

Ответ 1

Вы не можете создать модель с тем же именем, что и приложение, поскольку оно создаст конфликтующие имена. Когда вы создаете приложение, т.е. rails new Education, он создаст модуль с именем Education следующим образом

module Education
  class Application < Rails::Application
  #....
  end
end

Этот именованный модуль вызывается в таких файлах, как config.ru, routes.rb и environment.rb и многие другие. Поэтому, если вы смогли создать класс модели с тем же именем, это создало бы двусмысленность в отношении того, вызываете ли вы модель или модуль.