Обновить параметры в контроллере Ruby on Rails

У меня есть контроллер, в котором я хочу 9X_ruby-on-rails обновить значение одного из параметров перед 9X_ror обновлением, чтобы обновление выполнялось 9X_rails в том же сохранении в базе данных. К сожалению, следующий 9X_ruby-on-rails код не устанавливает z в базе данных:

if @model.x == "YES" && @model.z.blank? model_params[:z] = Time.now end @model.update_attributes(model_params) def model_params params.require(:model).permit(:x, :y, :z) end 

3
0
1
Общее количество ответов: 1

Ответ #1

Ответ на вопрос: Обновить параметры в контроллере Ruby on Rails

Это должно сработать:

def update attributes = model_params.clone if @model.x == "YES" && @model.z.blank? attributes[:z] = Time.now end @model.update_attributes(attributes) end def model_params params.require(:model).permit(:x, :y, :z) end 

Ваш код изначально 9X_ror не работал, потому что вызов model_params вызывает метод, а 9X_rails не фактическую локальную переменную. Вам 9X_ruby-on-rails необходимо создать клон возвращенного хэша 9X_ror и использовать его для update_attributes.

13
0