[Ruby on Rails] ActiveRecord で setter と getter の実装方法

Tadashi Shigeoka ·  Sun, May 6, 2012

Ruby on Rails の ActiveRecord で setter と getter を実装する方法を調べたのでメモ。

define_method を使って、下記のように書くか、

class MyModel < ActiveRecord::Base
  define_method("hoge"){
    read_attribute "hoge"
  }
  define_method("hoge="){ |hoge|
    write_attribute "hoge", hoge
  }
end

もしくは、下記のように書くのもありです。

class MyModel < ActiveRecord::Base
  define_method("hoge"){
    self["hoge"]
  }
  define_method("hoge="){ |hoge|
    self["hoge"] = hoge
  }
end

以上です。

【参考】

ActiveRecordでsetterとgetterを実装する際の注意点(define_method使用) - しょぼエンジニアの仕事メモ はてなブックマーク - ActiveRecordでsetterとgetterを実装する際の注意点(define_method使用) - しょぼエンジニアの仕事メモ

define_method (Module) - Rubyリファレンス はてなブックマーク - define_method (Module) - Rubyリファレンス