【问题标题】:Rails 3 Rails Console Test.new doesn't workRails 3 Rails 控制台 Test.new 不起作用
【发布时间】:2013-11-28 10:25:23
【问题描述】:

我在 Rails 3 中创建了一个脚手架并运行了迁移。但是当我尝试使用 rails 控制台创建模型的实例时,它不起作用。我在 Rails 4 中重复了相同的过程,并且效果很好。 这是我输入的命令。

rails 新的 testApp rails g 脚手架测试名称:字符串 耙分贝:迁移 导轨控制台 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'

请帮忙。我是rails的初学者。谢谢。

【问题讨论】:

  • 你的 rake db:migrate 在 Rails 3 中没有问题?

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 rails-console


【解决方案1】:

Test 是单元测试的一个模块。当您在控制台中键入它时,会显示此常量而不是您自己的模型。

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

【讨论】:

  • 谢谢。我会用不同的名字再试一次。
  • 是的,将名称更改为 Status 实际上适用于 rails 3。我还有一个问题。为什么测试在 rails 4 而不是 rails 3 中工作。我在 rails 4 中创建了一个测试模型,它在 rails 控制台上工作。谢谢。
  • 在 rails 4 中,你可能只是走运了。它与类加载器和操作顺序有关。如果通过某种方式首先加载了您的 Test 模型类,那么它将获胜。 Rails4 可能更改了类加载顺序,这可能会使命名不佳的类 Test 在单元测试版本之前加载,这可能会发生冲突。
【解决方案2】:

有关保留关键字的完整列表,请查看: http://reservedwords.herokuapp.com/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多