Я вижу очень странную проблему с простым методом контроллера. Либо я упускаю что-то фундаментальное, либо я сталкиваюсь с ошибкой. Моя ставка на первое.
У меня есть Thing
модель с ThingController
.
A Thing
имеет две переменные, name
и display
, обе строки.
ThingController
(код ниже) имеет метод toggle_display
, который переключает содержимое display
между "on"
и "off"
.
Проблема в том, что когда я вызываю это действие, Rails находит правильный Thing
, но @thing.display
равен нулю. Когда я проверяю базу данных, значение в столбце 'display' является правильным.
Странная часть в том, что когда я раскомментирую третью строку в приведенном ниже коде (то есть доступ @thing.name
до доступа к @thing.display
), тогда @thing.display
в порядке - это нормально не ноль, и он имеет значение, которое я ожидал. Как будто @thing.display
правильно инициализируется только после доступа к @thing.name
.
Есть идеи, почему я вижу это очень странное поведение?
def toggle_display
@thing = Thing.find(params[:id])
# @thing.name
if @thing.display
@thing.toggle_display_in_model
@thing.save
end
redirect_to things_url
end