Я использую Ruby on Rails 3.1, и я хотел бы понять, как правильно решить следующую проблему при указании констант.
У меня есть 2 класса:
class Class1 < ActiveRecord::Base
CONSTANT_CLASS_1_A = Class2::CONSTANT_CLASS_2_A # => 222
CONSTANT_CLASS_1_B = 111
end
class Class2 < ActiveRecord::Base
CONSTANT_CLASS_2_A = 222
CONSTANT_CLASS_2_B = Class1::CONSTANT_CLASS_1_B # => 111
end
Когда я пытаюсь «использовать» / «загрузить» Class1
, я получаю следующую ошибку:
NameError in ...
uninitialized constant Class1::CONSTANT_CLASS_2_B
Однако, если я укажу приведенный ниже код (обратите внимание на порядок констант), он будет работать:
class Class1 < ActiveRecord::Base
CONSTANT_CLASS_1_B = 1
CONSTANT_CLASS_1_A = CONSTANT_CLASS_2_A * CONSTANT_CLASS_3_B # => 3
end
Я знаю, что могу указать CONSTANT_CLASS_1_B
перед CONSTANT_CLASS_1_B
(по крайней мере, чтобы "решить" проблему в настоящее время), но это правильно? То есть, есть ли способ решить мою проблему «правильным» и « перманентным » способом (например, загрузкой всех Class1
констант перед извлечением других констант) ? Желательно ли использовать вышеуказанный код?
Бонус : Существует соглашение для такого рода вопросов? Если так, что это?