0

当我向我的 Rails API 发送请求时,我不确定发生了什么,但我得到了一些奇怪的数据生成。

当我生成一个ModelController发出网络请求以使用 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

到底是怎么回事?

4

1 回答 1

1

您需要为attr_accessible您在 Model.new 中传递的元素添加到您的模型中假设您有列name并且size在您的模型中。然后你应该这样写:

attr_accessible :name, :size
于 2013-06-17T22:27:31.407 回答