我第一次使用 Mogoid(当前支持 Rails-API 4 的测试版)。我用它来将用户表单保存为一个包含嵌入文档的文档。在控制器的更新方法中,如果返回的卡没有 id,我使用此构造创建新卡
params[:form_cards].andand.each do |card|
card['form_card_fields'].andand.each do |field|
if !field['id'].blank?
@formField=@formCard.form_card_fields.find(field['id'])
else
@formField=@formCard.form_card_fields.create!
end
end
if @form.save
render json: @form, status: :created, location: @form
else
render json: @form.errors, status: :unprocessable_entity
end
它在大多数情况下都有效。不幸的是,有时会发生一些错误,我创建的嵌入式文档没有持久 ID,每当我阅读它时,结果都会有所不同。使用后
返回的 ID 示例(每个都来自同一字段的不同读取操作)
536615c94d6163d0010a0000
536615d64d6163d0010b0000
536615dd4d6163d0010c0000
536615e84d6163d0010d0000
536616014d6163d0010e0000
我的模型看起来像这样:
class Form
include Mongoid::Document
include Mongoid::Timestamps
embeds_many :form_cards
end
class FormCard
include Mongoid::Document
include Mongoid::Timestamps
embeds_many :form_card_fields
embedded_in :form
end
class FormCardField
include Mongoid::Document
include Mongoid::Timestamps
embedded_in :form_card
end
我想这是某种持久性错误,但我找不到根本原因......
如果谁能帮助我,我会很高兴,因为它困扰了我三天