Ruby on rails 轨道自动生成;创建;参数中的散列

Ruby on rails 轨道自动生成;创建;参数中的散列,ruby-on-rails,ruby-on-rails-3,rails-models,Ruby On Rails,Ruby On Rails 3,Rails Models,当我向rails API发送请求时,我不太清楚到底发生了什么,但我得到了一些奇怪的数据 当我生成一个模型和控制器并发出网络请求以使用JSON创建该对象时,我将编写一个JSON字符串,该字符串仅包含哈希根处的创建参数。然后我这样创建它: Model.new(params[:model]) 对我来说,这很奇怪,因为我从未发送带有键“model”的散列,也没有使用键“model”包装参数散列 当我查看网络调用的参数时,我看到一个包含我所有参数的散列,与我发送的参数完全相同,但参数散列现在包括一个看似

当我向rails API发送请求时,我不太清楚到底发生了什么,但我得到了一些奇怪的数据

当我生成一个
模型
控制器
并发出网络请求以使用JSON创建该对象时,我将编写一个JSON字符串,该字符串仅包含哈希根处的创建参数。然后我这样创建它:

Model.new(params[:model])
对我来说,这很奇怪,因为我从未发送带有键“model”的散列,也没有使用键“model”包装参数散列

当我查看网络调用的参数时,我看到一个包含我所有参数的散列,与我发送的参数完全相同,但参数散列现在包括一个看似自动生成的散列,其键为“model”,值为我的原始参数散列

对我来说,这意味着Rails会在某个时候生成它。然而,它似乎工作得很好,所以我没有太担心

问题是我现在有了一个不同的API,它有一个
模型
,但它不会自动生成内部散列。然后,我尝试在我的
模型上使用
参数
,但它抱怨:

ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes: format, controller, action):
除了单独分配参数,而不是直接传递
params
散列或用
模型
散列包装我的原始网络调用之外,我根本不知道发生了什么,也不知道如何修复它


发生了什么事?

您需要为模型中传递的元素向模型中添加可访问的属性。新建 假设您的模型中有列
name
size
。那么你应该这样写:

attr_accessible :name, :size

不幸的是,这两种型号我都有。我可以使用任何其他通用格式的通用方法,除了create,因为它不会生成额外的散列。您能粘贴rails开发控制台日志的第一行吗?该日志包含请求中传递的所有属性?它是RestClient。这是一个API。你能把链接贴到截图上吗?让我们看看