0

ユーザーに属しているアクティブなレコード モデルがあります。

class Profile < ActiveRecord::Base
  belongs_to :user
  ...
end

私のモデル テストでは、before_all ブロッ​​クがあります。

before :all do
  @profile = build(:user)
end

各テスト ケースは、オブジェクトのディープ クローンを取得するアクセサ メソッドを介してプロファイル クラスのクリーン コピーを取得します。

def profile
  @profile.dup
end

毎回工場に電話するのではなく、素晴らしく高速です:)

ただし、私の問題は、プロファイルとその関連付けがメモリ内にあるため、プロファイルに user_id が存在しないため、メモリ内のユーザー オブジェクトもコピーされないことです。

while@profile.userはオブジェクトです:

<User id: nil, email 'test@test.com '.../>

@profile.dup.user

nil

どこに電話したら@profile.save魔法のように

@profile.dup.userになります:

<User id: 1, email 'test@test.com '...>

ユーザーをクローンに明示的にコピーするための私のプライベートメソッドをオーバーライドする以外に、レールにリフティングを実行させる方法があります。つまり、永続化さdupれた場合と同じようにメソッドを動作させますか?@profile

提案をありがとう。

4

0 に答える 0