Rails在参数中自动生成“Create”哈希

时间:2013-06-17 21:35:45

标签: ruby-on-rails ruby-on-rails-3 rails-models

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

当我产生的ModelController,并使得网络请求创建具有JSON该对象,我会写JSON字符串仅包含在散列的根创建的参数。然后我像这样创建它:

Model.new(params[:model])

对我来说,这很奇怪,因为我从来没有用关键'模型'发送哈希,也没有用关键'模型'包装我的参数哈希。

当我观看参数为网络电话,我看到所有我的参数的散列,正如我送它们,但参数现在散列包括与键“模式”和值看似自动生成的散列是我的原始参数哈希。

对我来说,这意味着Rails在某些时候会产生这种情况。但是,它似乎工作正常,所以我没有太担心。

问题是我现在有一个带Model的不同API,但它不会自动生成内部哈希。然后我尝试在我的params上使用Model,但它抱怨:

ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes: format, controller, action):

我不知道是怎么回事,在所有的,或如何解决它,除了用{{1单独分配的参数,而不是直接传递params散列或包装我原来的网络呼叫哈希。

发生了什么事?

1 个答案:

答案 0 :(得分:1)

您需要在模型中添加attr_accessible以获取您在Model.new中传递的元素 假设您的模型中有namesize列。那么你应该这样做:

attr_accessible :name, :size