def has_many(association_id, options = {})
validate_has_many_options(options)
klass = options[:class] || association_id.to_s.classify
foreign_key = options[:foreign_key] || "#{association_id}_id"
primary_key = options[:primary_key]
set_associated_class(association_id, klass)
opts = {
:association_id => association_id,
:foreign_key_name => foreign_key,
:primary_key_name => primary_key,
:wrap => options[:wrap],
:extend => options[:extend],
}
if opts[:wrap]
association_class = Association::HasManyWrap
else
association_class = Association::HasMany
end
association_accessor(association_id) do |target|
association_class.new(target, opts)
end
end