def self.reference(name, model)
reader = "#{name}_id""#{name}_id"
writer = "#{name}_id=""#{name}_id="
attributes << reader unless attributes.include?(reader)
index reader
define_method(reader) do
@attributes[reader]
end
define_method(writer) do |value|
@_memo.delete(name)
@attributes[reader] = value
end
define_method("#{name}=""#{name}=") do |value|
@_memo.delete(name)
send(writer, value ? value.id : nil)
end
define_method(name) do
@_memo[name] ||= begin
model = Utils.const(self.class, model)
model[send(reader)]
end
end
end