Получают ли замыкания в Javascript ссылку на полную внешнюю функцию или они получают только ссылки на переменные, которые они фактически используют?

Я столкнулся со следующей ситуацией:

В определении do_something есть

ModuleA::ModuleB::ClassC.do_something

. Мне нужно использовать модель из приложения

def do_something
...
    data = Order.all
...
end

Но также существует модуль

ModuleA::Order

Итак, я получаю сообщение об ошибке

undefined method `all' for ModuleA::Order:Module

. Я нашел решение, выполнив

def do_something
...
    data = Kernel.const_get('Order').all
...
end

, который возвращает модель. У меня вопрос: как лучше всего это сделать? есть более чистое решение? (несмотря на то, что одно и то же имя для класса и модуля это не самая лучшая идея, но здесь ее нельзя изменить ...)

9
задан santuxus 9 February 2011 в 15:49
поделиться