Rails update_attribute не попал в базу данных mysql

0

Это происходит только в процессе производства, когда мы обновляем некоторые записи через браузер, это изменение не было сохранено. это не похоже на проблему с кешем, поскольку мы проверили, что данные в mysql все еще были старыми данными. Однако контроллер получил сообщение об ошибке и флэш-памяти, как если бы изменение было успешно выполнено.

Однако мы можем внести изменения вручную в консоли rails или mysql без каких-либо проблем.

Любые идеи, почему это происходит?

btw, мы недавно переконфигурировали сайт для использования SSL, он может иметь какое-то отношение к этому.

  • 0
    Это могло бы помочь, если бы вы могли упомянуть: версию Rails, версию MySQL, опубликовать код контроллера, любой другой код, который выполняется на стороне при сохранении модели (before_save, любые наблюдатели и т. Д.).
  • 0
    Вставьте код, где вы обновляете записи ...
Показать ещё 2 комментария
Теги:
ssl

1 ответ

2

Есть ли что-нибудь, что могло бы предотвратить сохранение модели?

Один из способов гарантировать, что атрибуты установлены и сохранена модель, - использовать версию повышения исключения, которая может помочь исправить такие проблемы:

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 могут не успешно сохранять.

Если вы можете выполнить одно и то же обновление на одни и те же данные с помощью тех же методов, это характерно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню