我不确定当我向rails API发送请求时发生了什么,但是我得到了一些奇怪的数据。
当我产生的Model
和Controller
,并使得网络请求创建具有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
散列或包装我原来的网络呼叫哈希。
发生了什么事?
答案 0 :(得分:1)
您需要在模型中添加attr_accessible
以获取您在Model.new中传递的元素
假设您的模型中有name
和size
列。那么你应该这样做:
attr_accessible :name, :size