質問: Modelからデータを引っ張ってきたとき,ブラウザで確認すると Article:0x9fhu3u...と表示されます。 これは、データベースからデータがオブジェクトの16進数で帰ってきているという解釈で良いでしょうか。なぜこのような形になるのですか?
回答: `<%= blog %>` のように書くと、`<%= blog.to_s %>`を書いたことと同じになります。 16進数の部分はデータベースのデータというより、モデルのインスタンスのobject_idをベースにした値が表示されています。 下のコードのように object_id を左に1ビットシフトし(2倍しても同じです)、その値を16進数表示すると、 to_s と同じ値が得られます。(厳密には to_s には "0x00" が付いていますが) ``` >> blog.to_s "#" >> blog.object_id 70102406189460 >> (blog.object_id << 1).to_s(16) "7f83fa09a328" ``` ちなみに to_sの結果がこのようになるのは、Railsの仕様ではなく、Ruby標準の挙動です。 参考: * Class: Object (Ruby 2.2.3) * In Ruby, why does inspect() print out some kind of object id which is different from what object_id() gives? - Stack Overflow