В основном у меня есть эта Пользовательская модель, которая имеет определенные атрибуты, скажем, 'здоровье', и другую Битву модель, которая записывает всю битву между Пользователями.Пользователи могут сражаться друг с другом, и некоторая вероятность определит, кто победит.Оба потеряют здоровье после боя.
Итак, в контроллере Битва , действие "СОЗДАТЬ", которое я сделал,
@battle = Battle.attempt current_user.id, opponent.id
В битве 1013* модель,
def self.attempt current_user.id, opponent_id
battle = Battle.new({:user_id => current_user.id, :opponent_id => opponent_id})
# all the math calculation here
...
# Update Health
...
battle.User.health = new_health
battle.User.save
battle.save
return battle
end
Возвращаясь к контроллеру Битва , я сделал ...
new_user_health = current_user.health
, чтобы получить новое значение здоровья после Битвы.Однако значение, которое я получил, - это старое значение здоровья (значение здоровья до битвы).
Кто-нибудь сталкивался с такой проблемой раньше ???
ОБНОВЛЕНИЕ
Я просто добавляю
current_user.reload
перед строкой
new_user_health = current_user.health
, и это работает.Задача решена.Спасибо!