# File lib/og/meta.rb, line 150
        def has_many(name, klass, options = {})
                name_s = N::Inflector.singularize(name.to_s)
                
                # linkback is the property of the child object that 'links back' 
                # to this object. 

                linkback = options[:linkback] || "#{MetaUtils.expand(self)}_oid"
                
                # keep belongs to metadata, useful for 
                # reflection/scaffolding.

                meta :has, [klass, linkback]

                module_eval %{
                        def #{name}(extrasql = nil)
                                Og.db.select("SELECT * FROM #{Backend.table(klass)} WHERE #{linkback}=\#\@oid \#\{extrasql\}", #{klass})
                        end

                        def #{name}_count(extrasql = nil)
                                Og.db.count("SELECT COUNT(*) FROM #{Backend.table(klass)} WHERE #{linkback}=\#\@oid \#\{extrasql\}")
                        end                  

                        def add_#{name_s}(obj, extra = nil)
                                obj.#{linkback} = @oid
                                obj.save!
                        end
                        
                        def delete_all_#{name}(extrasql = nil)
                                Og.db.exec("DELETE FROM #{Backend.table(klass)} WHERE #{linkback}=\#\@oid \#\{extrasql\}") 
                        end                  
                }
        end