Rails update_attribute не попал в базу данных mysql - PullRequest
0 голосов
/ 11 октября 2009

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

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

Есть идеи, почему это происходит?

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

1 Ответ

2 голосов
/ 12 октября 2009

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

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

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's invalid
  edit

  render(:action => 'edit')
end

В некоторых случаях update_attributes может не сохраняться успешно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...