sbusso / merb_radiant

a try to move radiant on merb

This URL has Read+Write access

merb_radiant / lib / active_record_extensions.rb
100644 18 lines (17 sloc) 0.457 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
require 'active_record'
 
class ActiveRecord::Base
  def self.object_id_attr(symbol, klass)
    module_eval %{
def #{symbol}
if @#{symbol}.nil? or (@old_#{symbol}_id != #{symbol}_id)
@old_#{symbol}_id = #{symbol}_id
klass = #{klass}.descendants.find { |d| d.#{symbol}_name == #{symbol}_id }
klass ||= #{klass}
@#{symbol} = klass.new
else
@#{symbol}
end
end
}
  end
end