2013-11-04 10 views
7

Sto cercando di creare un nuovo modello di rotaie con il seguente comando:Il nome è già utilizzato o prenotato da Ruby on Rails?

rails generate model Education name:string 

Durante l'esecuzione si restituisce il seguente errore:

The name 'Education' is either already used in your application or reserved by Ruby on Rails. Please choose an alternative and run this generator again.

Dal momento che ho appena creato una nuova applicazione e hanno solo un altro modello il nome non è usato nell'applicazione e ho difficoltà a pensare a qualche ragione per cui Rails si riserverebbe un nome del genere?

Qualche idea su da dove viene questo errore e su come posso aggirarlo?

(Ho provato a cambiare il nome in qualcosa d'altro e funziona come previsto. Dal momento che il nome si adatta davvero il suo scopo non voglio cambiare il suo nome a meno che non v'è altro modo!)

Sono utilizzando Ruby 2.0.0 con Rails 4.0.0 e PostgreSQL

+5

hai chiamato anche l'istruzione? ad esempio 'rails new Education' – engineersmnky

+0

Sì. Pensi che sia per questo? – Severin

+2

questo è esattamente il motivo per cui – engineersmnky

risposta

20

Non è possibile creare un modello con lo stesso nome dell'applicazione perché creerà nomi in conflitto. Quando si crea un'applicazione cioè rails new Education si creerà un modulo chiamato Education come segue

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

Questo modulo denominato viene poi chiamato in file, come config.ru, routes.rb e environment.rb e molti altri. Quindi, se si fosse riusciti a creare una classe modello con lo stesso nome, si creerebbe ambiguità sul fatto che si stesse chiamando il modello o il modulo.