def has_many(association_id, options = {})
validate_has_many_options(options)
klass = options[:class] || Inflector.classify(association_id)
foreign_key = options[:foreign_key] || association_id.to_s + "_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