ユーザーに属しているアクティブなレコード モデルがあります。
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
提案をありがとう。