def has_many(association_id, options = {})
klass = options[:class_name] || association_id.to_s
key = options[:local_key] || association_id.to_s + "_id"
foreign_key = options[:foreign_key] || ''
class_eval "def \#{association_id}(objects = true)\nforeign_key = \"\#{foreign_key}\"\nif foreign_key.empty?\nforeign_key = dnattr()\nend\nresults = []\n@data[\"\#{key}\"].each do |item|\n\# This will even yield entries that don't necessarily exist\n\#{klass}.find_all(:attribute => foreign_key, :value => item, :objects => objects).each do |match|\nresults << match\nend\nend\nreturn results\nend\n"
end