当我向我的 Rails API 发送请求时,我不确定发生了什么,但我得到了一些奇怪的数据生成。
当我生成一个Model
并Controller
发出网络请求以使用 JSON 创建该对象时,我将编写一个 JSON 字符串,该字符串仅包含用于创建哈希根的参数。然后我像这样创建它:
Model.new(params[:model])
对我来说,这很奇怪,因为我从来没有发送一个带有键“模型”的哈希,也没有用键“模型”包装我的参数哈希。
当我查看网络调用的参数时,我看到一个包含我所有参数的哈希,与我发送它们的完全一样,但参数哈希现在包括一个看似自动生成的哈希,其键为“模型”,值是我的原始值参数哈希。
对我来说,这意味着 Rails 会在某个时候产生这种情况。但是,它似乎工作得很好,所以我并没有太担心。
问题是我现在有一个不同的 API Model
,但它不会自动生成内部哈希。然后我尝试params
在我的 上使用Model
,但它抱怨:
ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes: format, controller, action):
除了单独分配参数,而不是params
直接传递哈希或用哈希包装我的原始网络调用之外,我根本不知道发生了什么,或者如何修复它model
。
到底是怎么回事?