Это происходит только в процессе производства, когда мы обновляем некоторые записи через браузер, это изменение не было сохранено. это не похоже на проблему с кешем, поскольку мы проверили, что данные в mysql все еще были старыми данными. Однако контроллер получил сообщение об ошибке и флэш-памяти, как если бы изменение было успешно выполнено.
Однако мы можем внести изменения вручную в консоли rails или mysql без каких-либо проблем.
Любые идеи, почему это происходит?
btw, мы недавно переконфигурировали сайт для использования SSL, он может иметь какое-то отношение к этому.
Есть ли что-нибудь, что могло бы предотвратить сохранение модели?
Один из способов гарантировать, что атрибуты установлены и сохранена модель, - использовать версию повышения исключения, которая может помочь исправить такие проблемы:
def update
@model = Model.find(params[:id])
@model.update_attributes(params[:model])
redirect_to(model_path(@model))
end
Это может быть улучшено до более надежного метода:
def update
@model = Model.find(params[:id])
# Use exception-throwing update_attributes!
@model.update_attributes!(params[:model])
redirect_to(model_path(@model))
rescue ActiveRecord::RecordNotFound
render(:partial => 'not_found')
rescue ActiveRecord::RecordInvalid
# Delegate back to edit action, something invalid
edit
render(:action => 'edit')
end
Есть случаи, когда update_attributes могут не успешно сохранять.
Если вы можете выполнить одно и то же обновление на одни и те же данные с помощью тех же методов, это характерно.