保存嵌入文档时强制使用唯一字段

时间:2016-08-25 08:05:53

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

device.rb

class Device
  include Mongoid::Document
  field :devui, type: String
  field :name, type: String
  belongs_to :user
  embeds_many :responses

end

一些数据,我从外部服务器获取它,它给了我一个带有id字段的json。当我尝试插入响应时,id字段会重复,而mongo将_id与json数组中为某些数据的id相同。

devices_controller.rb

def fetch
        @device_data = "some data"
        @responses = @device.responses.new(@device_data)
        @device.save
        redirect_to @device
      end

responses.rb

class Response
  include Mongoid::Document
  field :dataFrame, type: String
  embedded_in :device
end

1 个答案:

答案 0 :(得分:0)

是的,mongoid在文档的情况下认为id_id相同。因此,您应该跳过将id分配给新的Response对象。自己分配id属性绝不是一个好主意。你可以这样做。

@responses = @device.responses.new(@device_data.except(:id))

如果您确实要存储@device_date[:id]值,则应向Response模型添加一些新字段,例如device_id或任何名称,您可以将该ID存储在其中。