Rails — Как мне перехватить и вернуть предупреждение, когда отредактированные значения не совпадают

#ruby-on-rails

#ruby-on-rails

Вопрос:

Как мне перехватить и вернуть предупреждение, когда отредактированные значения не совпадают, из-за чего rails не выполняет ОБНОВЛЕНИЕ?

Комментарии:

1. Что вы подразумеваете под тем, что значения не совпадают? Какой тип значений?

2. Согласен с @Devin, нужна дополнительная информация. Вы могли бы сверить атрибуты params с атрибутами самого объекта и не выполнять обновление, если они совпадают, но это не имеет особого смысла.

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

Ответ №1:

Вы могли бы обработать это в своем контроллере. В базовом определении обновления :

 def update
  if birth_date_changed? amp;amp; @user.update_attributes(params[:user])
    flash[:notice] = 'User was successfully updated.'
    redirect_to post_url(@post)
  else
    flash[:warning] = 'Birth date did not changed' unless birth_date_changed?
    render :action => "edit"
  end
end

private
def birth_date_changed?
  @user.birth_date != params[:user][:birth_date]
end