2013年8月2日金曜日

ActiveRecord method override

アクティブレコードのメソッドをオーバーライドしたいと思い。しらべてみました。

たとえばアクティブレコード Ore が item をひとつだけ持っている場合の定義。

class Ore < ActiveRecord::Base
has_one :item

んで。この item をとる時になんかの処理をいれたい場合。alias_method を指定する。

alias_method :original_item, :item

こうすると original_item メソッドが元々のメソッドになる。ので、適宜かきかえてやる。

例えば。

nil の場合初期化したクラスを返すならこんな感じ。

def item
  self.original_item || Item.new
end

参考にしたのはこちら。

activerecord - rails override default getter for a relationship (belongs_to) - Stack Overflow

うむ。

Written with StackEdit.

  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly