Rails 3 Rails Console Test.new не работает

Я создал каркас в Rails 3 и запустил миграцию. Но когда я попытался использовать консоль rails для создания экземпляра модели, это не сработало. Я повторил тот же процесс в Rails 4, и он отлично работает. Вот команды, которые я ввел.

rails new testApp rails g scaffold Имя теста:string rake db:migrate rails console p = Test.new

и ниже приведен ответ, который я получил: 1.9.3p194:002 > p = Test.new NoMethodError: неопределенный метод new' for Test:Module from (irb):2 from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.15/lib/rails/commands/console.rb:47:instart из /usr/local/rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.15 /lib/rails/commands/console.rb:8:in start' from /usr/local/rvm/gems/ruby-1.9.3-p194/gems/railties-3.2.15/lib/rails/commands.rb:41:in' из скрипта/rails:6:in require' from script/rails:6:in'

Пожалуйста помоги. Я новичок в рельсах. Спасибо.


person timchunght    schedule 15.11.2013    source источник
comment
Ваш rake db:migrate прошел без проблем в Rails 3?   -  person sabrams    schedule 15.11.2013


Ответы (2)


Test — это модуль модульного тестирования. Когда вы вводите его в консоли, эта константа отображается вместо вашей собственной модели.

Единственный урок — избегать использования конфиденциальных имен в постоянных именах вашего приложения.

person Billy Chan    schedule 15.11.2013
comment
Спасибо. Я попробую еще раз с другим именем. - person timchunght; 18.11.2013
comment
Да, изменение имени на Status действительно работает на rails 3. У меня есть еще один вопрос. Почему Test работает в rails 4, а не в rails 3. Я создал тестовую модель в rails 4, и она работает на консоли rails. Спасибо. - person timchunght; 18.11.2013
comment
В rails 4 вам, наверное, просто повезло. Это связано с загрузчиком классов и порядком операций. Если каким-то образом ваш класс тестовой модели будет загружен первым, тогда он выиграет. Rails4, возможно, изменил порядок загрузки классов, из-за чего этот класс с плохим названием мог Test загружаться перед версией модульного теста, что могло привести к конфликту. - person mr rogers; 20.01.2014

Полный список зарезервированных ключевых слов см. на странице http://reservedwords.herokuapp.com/.

person Erwin Schens    schedule 28.05.2015