2012-06-06 152 views
0

模块似乎无法找到这个任何地方:访问红宝石迭代

Module::ModelClassOne.all.each do 
    Module::ModelClassTwo.all.each do 
    # get an error of undefined constant ModelClassTwo 
    end 
end 

是怎么回事?我已经尝试了一些不同的选择:

Module::ModelClassOne.all.each do 
    ::Module::ModelClassTwo.all.each do 
    # get an error of undefined constant ModelClassTwo 
    end 
end 

Module::ModelClassOne.all.each do 
    ModelClassTwo.all.each do 
    # get an error of undefined constant ModelClassTwo 
    end 
end 

Module::ModelClassOne.each do 
    ::ModelClassTwo.each do 
    # get an error of undefined constant ModelClassTwo 
    end 
end 

没有什么工作,它的让我crrrrrrazzzzzy。

+1

您必须在您的代码中有错别字。访问类标识符与迭代循环的深度无关。无论环路深度如何,ModelClassTwo都应该可用。 – Casper

回答

2

each方法不重新定义执行上下文,所以这可能是ModelClassTwo没有按照您的预期定义的情况。

确保ModelClassTwo实际上已加载。您可能忘记了require该文件。

0

哇,很尴尬。它完全是一个错字,并且与如何使用rake任务吐出错误有很大关系。我想分配model.attributes = {option:option.id}而不是model.attributes = {option_id:option.id},它给我一个来自属性散列的“单元化常量选项”的错误。这里工作太久了。这是多么可怕的第二个问题。对不起家伙和女孩!