0

我在Rails 3中创建了一个脚手架并运行迁移。但是当我试图使用rails控制台创建模型的实例时,它不起作用。我在Rails 4中重复了相同的过程,并且完美地工作。 这是我键入的命令Rails 3 Rails控制台Test.new不起作用

轨新testApp 轨摹支架测试名称:字符串 耙分贝:迁移 轨控制台 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:in开始' from /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' from script/rails:6:in require' from script/rails:6:in'

请帮忙。我是一个初学者在rails。谢谢。

+0

你耙分贝:迁移经历了没有问题的Rails 3? – sabrams

回答

2

Test是单元测试的一个模块。当你在控制台中输入时,这个常量会显示出来,而不是你自己的模型。

唯一的教训是避免在应用程序的常量名称中使用敏感名称。

+0

谢谢。我会用不同的名字再试一次。 – timchunght

+0

是的,将名称更改为状态实际上适用于rails 3.我还有一个问题。为什么测试工作在rails 4而不是rails 3.我在rails 4中创建了一个测试模型,并且它在rails控制台上工作。谢谢。 – timchunght

+0

在rails 4中,你可能只是很幸运。它与类加载器和操作顺序有关。如果通过某种方式,您的Test模型类首先被加载,那么它会赢。 Rails4可能已经改变了类加载顺序,这可能会导致在单元测试版本之前加载该命名不佳的类“Test”,这可能会产生冲突。 –