Ruby on rails: неинициализированная ошибка имени модели (несоответствие модуля) - PullRequest
1 голос
/ 03 сентября 2011

Я обращаюсь к модели Company :: Элемент в контроллере Security :: MyController. Выдает ошибку неинициализированную константу Security :: Company :: Item. Таким образом, в основном это добавляет 'Security ::' для данной модели. Это не относится к некоторым другим моделям, скажем, Security :: User (модель в том же модуле безопасности). Что может быть возможным объяснением этого?

1 Ответ

2 голосов
/ 03 сентября 2011

Это проблема разрешения области.Вы должны попытаться использовать ::Company::Item внутри Security::MyController

В соответствии со спецификацией языка Ruby

::Something is a shortcut for Object::Something. The idea is that ::Something 
should look up a constant called Something in the global scope, but since ruby 
doesn't truly have a global scope, it looks it up in the Object class, which is 
the nearest thing in ruby to a global scope.

Префикс :: не позволит Ruby применять область по умолчанию в этом контексте, что в вашем случаеЭто Security:: область

...