Rails Grape 和 MongoId 一起用 ForbiddenAttributesError 的问题

birbird · 2015年07月12日 · 最后由 hammer 回复于 2015年07月15日 · 2326 次阅读

我想直接把 json payload 整体存到 Mongodb 里。但碰到了 ActiveModel::ForbiddenAttributesError。代码是这样的

format :json
params do
  requires :user, type: Hash do
    requires :name, type: String
    requires :password, type: String
  end
end
post :signup do
  puts params[:user]
  User.create(params[:user])
end

但同时这样就是可以的

format :json
params do
  requires :user, type: Hash do
    requires :name, type: String
    requires :password, type: String
  end
end
post :signup do
  puts params[:user]
  User.create({
      name: params[:user][:name],
      password: params[:user][:password]
    })
end

请问前面那个写法错在哪儿了?

提醒一下,我不熟悉 Grape,不知道是否过滤了 requires 以外的参数?如果不过滤会是个漏洞。

permitted = ActionController::Parameters.new(params).require(:city).permit!
result = City.new(permitted).save
需要 登录 后方可回复, 如果你还没有账号请 注册新账号