ActiveRecord::Relationクラスのinitializeメソッドに関しての質問です。


このメソッドの中では基本的に様々なインスタンス変数が初期化されているわけですが、  
インスタンス変数が初期化される過程で **self** を調べていると@values = valuesが実行された後の  
selfが指しているものが変わっていることに気づきました。

[![結果からいうとこんな感じです。](https://i.stack.imgur.com/BEI5T.png)](https://i.stack.imgur.com/BEI5T.png)

一体何が行われているのかがわからなくて困ってます。  
**「なぜ、インスタンス変数を初期化しているだけなのにselfが指し示すものが変わるのでしょうか？」**

文章だけでは伝えきれないので手元で試せる例を用意しました。↓↓↓  
<https://github.com/yukihirop/relation_question>

回答の方よろしくお願いいたします。




変わったのは「selfが指しているもの」ではなく単なる表示です。

ActiveRecord::Relationは必要になったタイミングで初めてクエリを実行しデータをロードします。pやpryでオブジェクトの中身を覗いた時もそのタイミングです。

コードを追いかけたわけではありませんが、`@values`に値が入ってないとクエリが実行できないためデフォルトの`<クラス名:オブジェクトID>`表示、`@values`に値が入ったあとはクエリが実行できるようになったので実際のデータ表示、になったのでしょう。

