私はゆっくりとこの問題に夢中になっています。Mongoid (および Ruby on Rails) の旅を始めたばかりなので、それは些細なことであり、何かを誤解していると確信しています。
私のモデルは次のとおりです。
class Drawing
include Mongoid::Document
field :image_uid
image_accessor :image
field :date_created, type: Time, default: Time.now
recursively_embeds_many
embedded_in :user
embedded_in :painting_template, class_name: 'Painting', inverse_of: :template_drawing
embedded_in :painting_result, class_name: 'Painting', inverse_of: :result_drawing
User モデル "embeds_many" Drawings、Painting モデル "embeds_one" template_drawing および result_drawing。
ここ数時間、私がやろうとしてきたことは、新しい Drawing を作成し、それをユーザーに添付して、その親が存在する場合はその親を定義することです。私はコンソールでたくさん遊んでいますが、基本的に私がしていたことはこれに似ていました:
User.first.drawings.last.parent_drawing = User.first.drawings.first.dup
コンソールは満足しているようで、User.first.drawings.first の内容を返しますが、User.first.drawings.last.parent_drawing は nil を返します...
それらを変数に割り当てたり、変数を割り当てたりしようとしましたが、何も変わりません。新しい図面を作成して、一方を他方の親として配置しようとしましたが、失敗しました。
親を割り当てることは不可能だという結論に達しました。そのため、逆の方法で子を追加しようとしましたが、それでも親または子を持つオブジェクトを取得できません。
失敗するコードをいくつか次に示します (私の Rails コードから抽出して短縮したものです)。
drawing = Drawing.new({:user => @user})
drawing.parent_drawing = @user.drawings.find(parent_id).dup
drawing.save
おかしなことに、描画自体は保存され、user.drawings にリストされますが、親はありません。
私は何を間違っていますか?