私は本番でオブジェクトを取得し、同じタイプの別のオブジェクトに正確なレプリカ(その内容をコピー)を実行したかったのです。Rubyの配列のディープコピー
は、あなたが、あなたはレプリカオブジェクトとしてオーバーと
tt2
コピーする最初のオブジェクトとしてtt
があるとしましょう:私はそれらのどれも働いたルビーコンソールから、3つの方法でこれをやってみました。私が試した最初のアプローチは、クローニングIが試みアレイtt2.patients = tt.urls.patients tt2.doctors = tt.segments.doctors tt2.hospitals = tt.pixels.hospitals
第2のアプローチは、実際に配列をクローニング同じである配列を複製されている:私は試み
tt2.patients = tt.patients.dup tt2.doctors = tt.doctors.dup tt2.hospitals = tt.hospitals.dup
第三のアプローチはmarhsallingれます。別の配列から深いコピーのための上記の作品の
tt2.patients = Marshal.load(Marshal.dump(tt.patients)) tt2.doctors = Marshal.load(Marshal.dump(tt.doctors)) tt2.hospitals = Marshal.load(Marshal.dump(tt.hospitals))
なし。個々のアプローチを個別に試みた後、最初のオブジェクト(tt
)のすべてのコンテンツは無効になります(患者、医師、病院はなくなります)。あるオブジェクトの内容を別のオブジェクトにコピーすることについて他のアイデアはありますか?ありがとう。
@bar = @ bar.save
最初の例で変数を設定するだけです。代わりにtt2.patients = tt.patiens.cloneを試してください。 – three