/ / рубин постоянно унищожени след приключване на метода? - рубинки на релси, рубин

рубин постоянно унищожени след приключване на метода? - рубинки на релси, рубин

Имам клас, наследяващ от ActiveRecord :: Base, който има callback after_create. В рамките на обратната връзка създавам константа, както е показано по-долу:

class ClassificationCode < ActiveRecord::Base
after_create :associate_mongoid

def associate_mongoid
class_str = column_field.classify
klass = Object.const_set class_str, Class.new
puts "What is this #{klass} and its name #{klass.name}" # What is this SportsField and its name SportsField
c = klass.new
c["dynamic_field"] = "abc"
c.save
end
end

Елементът е запазен успешно в моя mongoid db, затова знам, че този метод напълно изпълнява. Тази константа обаче престава да съществува извън този метод. Пускам конзолата за релси:

> SportsField
NameError: uninitialized constant SportsField

> ClassificationCode::SportsField
NameError: uninitialized constant ClassificationCode::SportsField

Какво се случи с константата? Защо не съществува вече? Презаредих конзолата няколко пъти и все пак тази константа не съществува.

Отговори:

0 за отговор № 1

Това изглежда е проблем с обхвата. Вие определяте константа във вашия метод и след това излизате от този метод. Константите са почти като всяка друга променлива, с изключение на това, че не можете да ги превъзложите.Ако я дефинирате по метод, тя не е определена извън този метод.Мисля, че злоупотребявате с постоянството тук.