def has_many(name, klass, options = {})
name_s = N::Inflector.singularize(name.to_s)
linkback = options[:linkback] || "#{MetaUtils.expand(self)}_oid"
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