class UsersController < ApplicationController
....
def update
if @user.update(edit_user_params)
flash[:success] = 'Profilo aggiornato correttamente'
redirect_to user_path(@user)
else
render action: 'edit'
end
end
....
private
def edit_user_params
params.require(:user).permit(:email, information_attributes: [:name, :surname, :date_of_birth, :address, :city, :country, :post_code, :phone])
end
end
Как вы можете видеть, у меня есть вложенные формы.Проблемы с вложенными формами и метод обновления
Модель Informatation производится по следующей колонке:
- имя
- фамилия
- date_of_birth
- адрес
- город
- страна
- post_code
- телефон
- кредит
В вложенных формах не существует поле ввода для кредита, так как обновить кредит я создал еще один поток.
Проблема заключается в том, что при рельсах @user.update(edit_user_params)
он переписывает все столбцы строки информации, относящиеся к конкретному пользователю, то есть если кредит был равен 15 $ после обновления, он становится 0. Что делает это случиться? Должен ли метод update
обновлять только столбцы, указанные в ()
?
В зависимости, потому что в Information.rb
у меня есть следующий Validate:
validates :credit, numericality: { greater_than_or_equal_to: 0.01 }
Я всегда получаю сообщение об ошибке, потому что результаты credit
поля равна 0,0
Привет, я разработал его, добавив в модель 'User' следующее:' accepts_nested_attributes_for: information, update_only: true', то есть я добавил параметр 'update_only: true' – zer0uno