使用Json数组插入新的Mongo文档

时间:2016-02-16 19:01:26

标签: arrays json mongodb ruby-on-rails-4 mongoid

我正在构建一个create方法,其中传递给控制器​​的参数是在json中。我的所有string字段都插入到数据库中,但我的Array字段为null

这是我的模型(剥离简单)

Class Model
    include Mongoid::Document
    include Mongoid::Timestamps
    field :name
    field :list, type: Array
end

这是创建方法

def create
    a = a.find(params[:some_id])
    t = a.Model.create!(my_params)
    render json: t.as_json
    end        
end

private
    def my_params
        params.permit(:name, :list)
end 

我也在POST中使用以下标题

Content-Type: application/json
Accept: application/json

这是我的输入正文:

{
    "name": "test_name",
    "list":[{ 
    "value1" : "test1",
    "value2" : "test2
    }]
}

以下是显示null数组

的当前输出
{
  "_id": {
    "$oid": "56c36f5cd592ce0e70b4f7da"
  },
  "name": "test_name",
  "list": null,
  "created_at": "2016-02-16T18:50:04.472Z",
  "updated_at": "2016-02-16T18:50:04.472Z"
}

我似乎无法弄清楚为什么这不起作用

1 个答案:

答案 0 :(得分:0)

我找到了朋友给我的答案。 params.permit来电需要将list

的可接受属性列入白名单

例如:params.permit(:name, :list [:value1])除此之外,如果白名单不能是静态的另一种解决方法是使用

def my_params    
    params.permit!     
    params.permit(:name, :list)
end

这将允许所有。