у нас есть помощник модели (используемый несколькими разными моделями) с именем set_guids, который устанавливает self.theguid в случайную строку. Давно пользуясь им, мы знаем, что это работает.
в новой модели «Блюдо», которую мы создали, у нас есть
before_create :set_guids (NOTE: no other before/after/validation, just this)
def do_meat_dish
( this is invoked by @somemeat.do_meat_dish in the Dish contoller )
( it manipulated the @somemeat object using self.this and self.that, works fine)
( THEN sometimes it creates a new object of SAME MODEL type )
( which is handled differently)
@veggie = Dish.new
@veggie.do_veggie_dish
end
def do_veggie_dish
recipe_str = "add the XXXX to water"
recipe_str.gsub!("XXXX", self.theguid) *** the PROBLEM: self.theguid is nil
end
как только мы выполним veggie = Dish.new
, не следует ли инициализировать veggie.theguid
?
Обратите внимание, что мы не сохранили новый объект еще ... но before_create должен был все же сделать свое дело, верно?
это как-то связано с созданием нового экземпляра модели внутри метода для той же модели?
это что-то с использованием @ для переменных?
Дополнительное примечание: если мы закомментируем строку, пытаясь получить доступ к self.theguid, все остальное работает нормально ... это ТОЛЬКО значение (предположительно), установленное before_create set_guids, равным nil, а не guid.