У меня есть простая модель под названием PhoneNumber:NameError: неинициализированные постоянные (рельсы)
class PhoneNumber < ActiveRecord::Base
validates :pnumber, presence: true, on: :create #=> { :message => " cannot be blank" }
validates :pnumber, numericality: true, on: :create
end
Я хожу в корневой папке приложения (один, содержащий приложение вложенную папку) и запустить консоль:
rails console --sandbox
Когда я пытаюсь создать пустой PHONENUMBER (я хочу, чтобы получить сообщение об ошибке, как проверка кончится) Я получаю следующее сообщение об ошибке:
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
Кажется, консоль не знает о модели. В обычном рубине вам нужно «потребовать» файл, содержащий класс, но я думал, что консоль рельсов должна автоматически загружать все модели. Что здесь происходит?
Кажется, это было имя файла - это было приложение/модели/PhoneNumber.rb. Когда я изменил его на app/models/phone_number.rb, сообщение об ошибке исчезло. – Nick
'reload!' Работал для меня! Кажется, что некоторые части инициализации модели получаются кэшированными, поэтому, если в этом разделе есть ошибка, она может стать «невидимой» ошибкой при повторном запуске консоли. – Meekohi