Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未初始化的常量名称错误_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 未初始化的常量名称错误

Ruby on rails 未初始化的常量名称错误,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我有如下的模型 app/models/views/def_usage.rb class Abc class Def < ActiveRecord::Base self.table_name = 'vSomeview' end end FactoryGirl.define do factory :def_usage, class: Abc::DefUsage do ...... end end 我收到错误未初始化常量Abc::defusion(namererror)

我有如下的模型

app/models/views/def_usage.rb

class Abc
  class Def < ActiveRecord::Base

self.table_name = 'vSomeview'

  end
end
FactoryGirl.define do
  factory :def_usage, class: Abc::DefUsage do
 ......
  end
end
我收到错误
未初始化常量Abc::defusion(namererror)


我试图更改
class:Views::Abc::defusion
Views::defusion
,但没有成功。我在尝试执行
rails控制台时遇到了这个错误。为什么会出现此错误?

您的路径需要与模块/类层次结构相匹配

如果希望类位于
app/models/views/def.rb
,则类必须位于
views::def

如果希望类是
Abc::Def
,则路径必须是
app/models/Abc/Def.rb

如果希望类名为
defusion
,则文件名必须为
def_usage.rb


不能使用任意路径和类名。如果您想让Rails自动为您加载常量,它们需要匹配。

谢谢。所以我的类在models/views/def_usage.rb中,我在factory girl views::defuse中命名它,那么它应该正常工作吗?但是得到相同的错误尝试一下
models/def_usage.rb
并调用类
defusion
没有真正的理由需要将它放在
视图中,所以当我将它移动到models/abc/def_usage.rb并在工厂中命名为abc::defusion时,它就工作了。现在可以工作了。谢谢米加和卡尔