当我运行我的测试时,我得到一个错误未定义的常量Admin :: Blog :: Category。
模型的定义如下:
module Blog
class Category < ActiveRecord::Base
...
end
end
当我尝试从我的管理员控制器调用它时,我收到错误。控制器的定义如下:
module Admin
module Blog
class CategoriesController < Admin::AdminController
...
end
end
end
我的问题是这个名称间隔不正确或我如何调用Blog :: Category模型?
答案 0 :(得分:1)
您需要将其称为::Blog::Category.all
,例如获取控制器内的所有类别。了解搜索将如何发生的细节。
module Blog
class Category
#...
end
end
module Admin
module Blog
class Categories
def self.class_name
Module.nesting
end
end
end
end
Admin::Blog::Categories.class_name
# >> [Admin::Blog::Categories, Admin::Blog, Admin]
在此之后它将搜索顶层。我们来看两个例子:
module Blog
class Category
#...
end
end
Category = 12
module Admin
module Blog
class Categories
def self.const_value
Category
end
end
end
end
Admin::Blog::Categories.const_value # => 12
,现在......
module Blog
class Category
#...
end
end
Category = 12
module Admin
Category = 11
module Blog
class Categories
def self.const_value
Category
end
end
end
end
Admin::Blog::Categories.const_value # => 11
按照上面的两个例子,这个例子,应该抛出错误:
module Blog
class Category
#...
end
end
module Admin
module Blog
class Categories
def self.const_value
Category
end
end
end
end
Admin::Blog::Categories.const_value
# uninitialized constant Admin::Blog::Categories::Category (NameError)
阅读本指南tutorial以了解此主题。
最后完成:
module Blog
class Category
end
end
module Admin
module Blog
class Categories
def self.const_value
::Blog::Category
end
end
end
end
Admin::Blog::Categories.const_value # => Blog::Category