Rails インスタンスが持つインスタンス変数一覧をハッシュで取得
ActiveRecordのattributes的な。
instance_values でできるみたいです。(要ActiveSupport)
[1] pry(main)> class Hoge [1] pry(main)* attr_accessor :a, :b, :c [1] pry(main)* end => nil [2] pry(main)> hoge = Hoge.new => #<Hoge:0x007fec4b2859d0> [3] pry(main)> hoge.instance_values => {} [4] pry(main)> hoge.a = 1 => 1 [5] pry(main)> hoge.c = 4 => 4 [6] pry(main)> hoge.instance_values => {"a"=>1, "c"=>4}
値が入っていないインスタンス変数は無視されるし、使い勝手がいいです。
@でインスタンス変数を足したときも見てみました。
[1] pry(main)> class Hoge [1] pry(main)* def sss [1] pry(main)* @s = 12 [1] pry(main)* end [1] pry(main)* end => :sss [2] pry(main)> hoge = Hoge.new => #<Hoge:0x007ff1f3c5df40> [3] pry(main)> hoge.instance_values => {} [4] pry(main)> hoge.sss => 12 [5] pry(main)> hoge.instance_values => {"s"=>12} [6] pry(main)>
足されてますね〜。