_ ActiveRecord内部での属性の読み書き かんたんRuby on RailsでWebアプリケーション開発(arton) P.144で、なぜread_attributeと記述しているかと質問を受けたのだけど、即答できなかった。で、なぜそう書いたかあらためて考えてみた。 class Item < ActiveRecord::Base def foo x = 3 end def bar puts "#{x}" end end 上のItemでxが属性(itemsテーブルのフィールド)だとすると、xへ代入しようとしているメソッドfooはバグ、xの内容を読み出そうとしているbarは想定どおりに動く。 というのはfooの場合、Rubyはxをローカル変数の宣言とみなす。そのため、3はフィールドxには代入されず、ローカル変数xに代入されるだけとなる。したがってこのメソッドは実行時にエラーにはならな