Я удалил уязвимость массового назначения следующей строки:
friend = Friend.find(params[:id])
friend.update_attributes(params[:name])
переписав его как:
friend = Friend.find(params[:id])
friend.update_attributes(params.permit(:name))
Но это дало мне эту ошибку:
ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes for Friend: name):
Unpermitted parameters: id
Любая идея, почему я получаю эту ошибку?
Edit :
Я добавил attr_accessible :status_id
и params.permit(:id, :name)
, и ошибка исчезла. Но является ли добавление attr_accessible
правильным способом сделать это, поскольку мы пишем сильные параметры для удаления этой строки, не так ли?
attr_accessible
в вашей модели? - person j-dexx   schedule 16.06.2015params.inspect
. Убедитесь, что вы проверяете правильную часть кода — возможно, вы редактируете метод обновления, но вызываете метод создания. - person Astery   schedule 16.06.2015attr_accessible
из своей модели, иparams.permit(:name, :id)
не работает - person Hellboy   schedule 16.06.2015id
из внешнего интерфейса, как вы упомянули здесьparams = {"name"=>"John", "id"=>"15"}
. потому что в любом случае вы не сохраняете его в базу данных - person Abhinay   schedule 10.07.2015