访问红宝石迭代
问题描述:
模块似乎无法找到这个任何地方:访问红宝石迭代
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。
答
each
方法不重新定义执行上下文,所以这可能是ModelClassTwo
没有按照您的预期定义的情况。
确保ModelClassTwo
实际上已加载。您可能忘记了require
该文件。
答
哇,很尴尬。它完全是一个错字,并且与如何使用rake任务吐出错误有很大关系。我想分配model.attributes = {option:option.id}而不是model.attributes = {option_id:option.id},它给我一个来自属性散列的“单元化常量选项”的错误。这里工作太久了。这是多么可怕的第二个问题。对不起家伙和女孩!
您必须在您的代码中有错别字。访问类标识符与迭代循环的深度无关。无论环路深度如何,ModelClassTwo都应该可用。 – Casper