Mogoid を初めて使用します (Rails-API 4 をサポートする現在のベータ版)。これを使用して、ユーザー フォームをドキュメントが埋め込まれた 1 つのドキュメントとして保持します。コントローラーの update メソッドでは、返されたカードに 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
ある種の永続性エラーだと思いますが、根本的な原因を見つけることができません...
3日間私を悩ませるのを手伝ってくれる人がいたら嬉しいです