rails 5批量操作的ForbiddenAttributesError

时间:2017-11-18 13:02:05

标签: ruby-on-rails ruby ruby-on-rails-5

我尝试在我的rails控制器中批量操作这是我的脚本

def update_by_user
    user_skill_selected = UserSkillSelected.create(params[:user_skill_selected][:users])

    # check through array if all is valid
    if user_skill_selected.all? {|item| item.valid?}
      render json: {json_status: save_success}
    else
      render json: {json_status: save_failed}
    end
end

这是我的user_skill_selected_pa​​rams

def user_skill_selected_params
    params.require(:user_skill_selected).permit(:user_id, :subskill_id, :skill_id, :users => [])
  end

不幸的是我的日志中出现错误,日志说

"exception": "#<ActiveModel::ForbiddenAttributesError:ActiveModel::ForbiddenAttributesError>",

之后我尝试使用带有数组值及其工作的create方法从rails控制台批量操作

任何人都可以解决这个问题...... :( 抱歉英文不好

1 个答案:

答案 0 :(得分:0)

这可能令人困惑。您的代码将params[:user_skill_selected][:users]传递给模型create方法,而不是user_skill_selected_params强参数,这就是您看到错误的原因。

更改此行:

user_skill_selected = UserSkillSelected.create(params[:user_skill_selected][:users])

对此:

user_skill_selected = UserSkillSelected.create(user_skill_selected_params)

它应该消除这个错误。