У меня странная проблема, которая преследует меня. У меня есть некоторые пользовательские классы, определенные в /lib/**/**
, которые я пытаюсь загрузить в контроллер. Итак, учитывая:
# dir: lib/forms/enums/data_type.rb
module Forms
class DataType
TEXT = 0
NUMBER = 1
end
end
# dir: controllers/form_controller.rb
class FormController < ApplicationController
def update
# Here, I get the uninitialized constant error for MyModule::DataType
if params[:someAttr] === Forms::DataType::TEXT
...
end
...
end
...
end
Однако, если я помещу класс DataType
в dir: lib/forms/
, то есть в ту же папку, что и forms
, вместо подпапки enums
, он может ссылаться это просто отлично.
Я уверен, что я делаю что-то, в основном c, очень неправильно, но я не понимаю, почему Rails может найти какие-либо классы в модулях, но не в подкаталогах?
Update / Изменить: Кажется, работает, если я обращаюсь к нему, добавьте его в дополнительный подмодуль и обозначьте его как Forms::Enums::DataType::TEXT
, например так:
# dir: lib/forms/enums/data_type.rb
module Forms
module Enums
class DataType
TEXT = 0
NUMBER = 1
end
end
end
Итак, если я введу подкаталог, требуется ли это всегда вводить субмодуль?