是否可以在 Rails 的强参数中将 JSON(作为文本)列入白名单?

Is it possible to whitelist JSON (as text) in Rails' strong parameters?

假设我有这个 JSON:

{
   name: 'David',
   tags: { 
     is_confused: true 
   }
}

并且在特定模型(即用户)中,我可以直接保存它...但是我的标签对象需要保存在稍后将序列化为 JSON 的文本列中。有没有办法用强参数做到这一点?

您可以将标签强制 json,然后再将其作为具有强参数的字符串。

假设您的对象被命名为 "params":

params[:tags] = params[:tags].permit(:is_confused).to_json
final_data = params.permit(:name, :tags)

这使用强参数在将其转换为 json 字符串之前检查标签字段,以便您可以将其保存为文本(并使用强参数确保它是一个字符串)。