Ho un semplice modello chiamato PhoneNumber:NameError: costanti non inizializzate (rotaie)
class PhoneNumber < ActiveRecord::Base
validates :pnumber, presence: true, on: :create #=> { :message => " cannot be blank" }
validates :pnumber, numericality: true, on: :create
end
vado nella cartella principale dell'applicazione (quello che contiene la sottocartella app) e avviare la console:
rails console --sandbox
Quando provo a creare un vuoto PhoneNumber (voglio ottenere un messaggio di errore come la convalida deve fallire) sto ottenendo il seguente messaggio di errore:
2.0.0-p451 :001 > PhoneNumber.new
NameError: uninitialized constant PhoneNumber
from (irb):1
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.1.5/lib/rails/commands/console.rb:90:in `start'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.1.5/lib/rails/commands/console.rb:9:in `start'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.1.5/lib/rails/commands/commands_tasks.rb:69:in `console'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.1.5/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.1.5/lib/rails/commands.rb:17:in `<top (required)>'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.1.5/lib/rails/app_rails_loader.rb:43:in `require'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.1.5/lib/rails/app_rails_loader.rb:43:in `block in exec_app_rails'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.1.5/lib/rails/app_rails_loader.rb:32:in `loop'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.1.5/lib/rails/app_rails_loader.rb:32:in `exec_app_rails'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.1.5/lib/rails/cli.rb:5:in `<top (required)>'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.1.5/bin/rails:9:in `require'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/gems/railties-4.1.5/bin/rails:9:in `<top (required)>'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/bin/rails:23:in `load'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/bin/rails:23:in `<main>'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/bin/ruby_executable_hooks:15:in `eval'
from /Users/nnikolo/.rvm/gems/[email protected]_rails_4_0/bin/2.2.2.02.02.02.0.2.2.02.222222.2.02.02.0.2.2.022222222222222
Sembra che la console non sia a conoscenza del modello. In ruby semplice è necessario 'richiedere' il file contenente la classe, ma ho pensato che la console di rota caricherà automaticamente tutti i modelli. Che cosa sta succedendo qui?
Sembra che fosse il nome del file - era app/models/PhoneNumber.rb. Quando l'ho modificato in app/models/phone_number.rb il messaggio di errore è scomparso. – Nick
'ricarica!' Ha funzionato per me! Sembra che alcune parti dell'inizializzazione del modello vengano memorizzate nella cache, quindi se c'è un errore in quella sezione può diventare un errore "invisibile" quando si esegue la console una seconda volta. – Meekohi