最近我从ruby3.1.2-alpine3.15->更新ruby3.2.1-alpine3.17,我做的唯一的 gem 更新是mysql2,从0.5.3到0.5.5支持 openssql3。并遵循Ruby3.2.0 Breaking Changes并添加--jit --yjit标志。几乎所有应用程序都运行良好。但不知怎的,一段代码却没有。只是一个简单的params.permit:
permitted_params = params.permit(:category_id, :private, tags: [])\nRun Code Online (Sandbox Code Playgroud)\n失败的原因是
\nNoMethodError:\n undefined method `=~\' for #<HereGoes::MyModel>\nRun Code Online (Sandbox Code Playgroud)\n我的params看起来像这样:(其中“字段”只是额外的数据)。我看到的唯一奇怪的事情是嵌套的ActionController::Parameters,但同样的参数在旧的 ruby 版本中解析得很好。
"#<ActionController::Parameters {\\"field_values\\"=>[#<ActionController::Parameters \n{\\"field_id\\"=>4, \\"value\\"=>\\"Test changed\\", \\"type\\"=>\\"string\\"} permitted: false>], #\n<HereGoes::MyModel id: nil, category_id: nil, uuid: \\"87ebb507-e381-4d57-b66c-10e51f10c014\\", \ncreated_at: nil, updated_at: nil, name: \\"Alphazap5\\", \\"fields\\"=> {\\"Viva11\\"=>nil,\\"Y-solowarm4 \nTextField\\"=>nil,\\"Y-solowarm4 StringField\\"=>nil,\\"Y-solowarm4 LocationsField\\"=>nil}}, \nbackup_id: 0, options: {}, tag_list: nil>=>{\\"id\\"=>1}} …Run Code Online (Sandbox Code Playgroud)