Имя уже используется или зарезервировано 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
и многие другие. Поэтому, если вы смогли создать класс модели с тем же именем, это создало бы двусмысленность в отношении того, вызываете ли вы модель или модуль.