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
答案 0 :(得分:0)
是的,mongoid
在文档的情况下认为id
和_id
相同。因此,您应该跳过将id
分配给新的Response
对象。自己分配id
属性绝不是一个好主意。你可以这样做。
@responses = @device.responses.new(@device_data.except(:id))
如果您确实要存储@device_date[:id]
值,则应向Response
模型添加一些新字段,例如device_id
或任何名称,您可以将该ID存储在其中。