アクティブレコードのメソッドをオーバーライドしたいと思い。しらべてみました。
たとえばアクティブレコード 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.
0 件のコメント:
コメントを投稿