Rails: Как мы можем определить, какие параметры обновляются в CRUD controller

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

Мне просто интересно: как я могу определить, какие параметры обновляются в классическом CRUD controller? Я хотел бы перенаправить на другой путь в зависимости от того, какие параметры изменяются.

Например, если у меня есть Person с 3 атрибутами id name и firstname

В моем контроллере:

 def update
  @person = Person.find(params[:id])

  respond_to do |format|
    if @person.update_attributes(params[:person])
      #...
    else
      #...
    end
  end
end
  

Как я могу определить, что name изменяется, а не firstname

Будет ли что-то вроде !params[:name].nil? работы?

Спасибо за вашу помощь!

Ответ №1:

итак, вы могли бы проверить параметры, как вы сказали. Что-то вроде if !params.[:name].nil? ...

или

Вы могли бы использовать _changed? методы

 @person.attributes = params[:person]
if @person.name_changed?
  next_path = name_changed_path
else
 ...
end
@person.save
redirect_to next_path
  

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

1. _changed? круто, убедитесь, что вы сначала установили атрибуты для объекта, как это сделал здесь Джесси с помощью @person.attributes = params[:person] или путем вызова update_attributes , как в вопросе Лукаса first.