module ActiveFedora::Associations
def association(name) # :nodoc:
Returns the association instance for the given name, instantiating it if it doesn't already exist
def association(name) # :nodoc: association = association_instance_get(name) if association.nil? reflection = self.class._reflect_on_association(name) association = reflection.association_class.new(self, reflection) if reflection association_instance_set(name, association) if association end association end
def association_instance_get(name)
def association_instance_get(name) raise "use a symbol" if name.is_a? String @association_cache[name] end
def association_instance_set(name, association)
def association_instance_set(name, association) @association_cache[name] = association end
def clear_association_cache # :nodoc:
Clears out the association cache.
def clear_association_cache # :nodoc: @association_cache.clear if persisted? end
def delete(*)
def delete(*) reflections.each_pair do |name, reflection| association(name.to_sym).delete_all if reflection.macro == :has_many end super end