def self.addr_attr *names for name in names define_method name do self.address[name] if self.address end define_method "#{name}=" do |v| self.address ||= Address.new self.address[name] = v self.address.save end end end