Module: ActiveFedora::Reflection::ClassMethods
- Defined in:
 - lib/active_fedora/reflection.rb
 
Instance Method Summary collapse
- 
  
    
      #_reflect_on_association(association)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the AssociationReflection object for the
association(use the symbol). - #child_resource_reflections ⇒ Object
 - 
  
    
      #clear_reflections_cache  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - #contained_rdf_source_reflections ⇒ Object
 - #outgoing_reflections ⇒ Object
 - 
  
    
      #reflect_on_all_associations(macro = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns an array of AssociationReflection objects for all the associations in the class.
 - #reflect_on_all_autosave_associations ⇒ Object
 - 
  
    
      #reflect_on_association(association)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the AssociationReflection object for the
association(use the symbol). - 
  
    
      #reflections  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns a hash containing all AssociationReflection objects for the current class.
 
Instance Method Details
#_reflect_on_association(association) ⇒ Object
Returns the AssociationReflection object for the association (use the symbol).
Account._reflect_on_association(:owner)             # returns the owner AssociationReflection
Invoice._reflect_on_association(:line_items).macro  # returns :has_many
  
      124 125 126 127 128 129 130 131 132  | 
    
      # File 'lib/active_fedora/reflection.rb', line 124 def _reflect_on_association(association) val = reflections[association].is_a?(AssociationReflection) ? reflections[association] : nil unless val # When a has_many is paired with a has_and_belongs_to_many the assocation will have a plural name association = association.to_s.pluralize.to_sym val = reflections[association].is_a?(AssociationReflection) ? reflections[association] : nil end val end  | 
  
#child_resource_reflections ⇒ Object
      111 112 113  | 
    
      # File 'lib/active_fedora/reflection.rb', line 111 def child_resource_reflections reflect_on_all_associations(:has_subresource).select { |_, reflection| reflection.klass <= ActiveFedora::File } end  | 
  
#clear_reflections_cache ⇒ Object
:nodoc:
      138 139 140  | 
    
      # File 'lib/active_fedora/reflection.rb', line 138 def clear_reflections_cache # :nodoc: @__reflections = nil end  | 
  
#contained_rdf_source_reflections ⇒ Object
      115 116 117  | 
    
      # File 'lib/active_fedora/reflection.rb', line 115 def contained_rdf_source_reflections reflect_on_all_associations(:has_subresource).select { |_, reflection| !(reflection.klass <= ActiveFedora::File) } end  | 
  
#outgoing_reflections ⇒ Object
      107 108 109  | 
    
      # File 'lib/active_fedora/reflection.rb', line 107 def outgoing_reflections reflections.select { |_, reflection| reflection.is_a? RDFPropertyReflection } end  | 
  
#reflect_on_all_associations(macro = nil) ⇒ Object
Returns an array of AssociationReflection objects for all the associations in the class. If you only want to reflect on a certain association type, pass in the symbol (:has_many, :has_one, :belongs_to) as the first parameter.
Example:
Account.reflect_on_all_associations             # returns an array of all associations
Account.reflect_on_all_associations(:has_many)  # returns an array of all has_many associations
  
      92 93 94 95 96  | 
    
      # File 'lib/active_fedora/reflection.rb', line 92 def reflect_on_all_associations(macro = nil) association_reflections = reflections.dup association_reflections.select! { |_k, reflection| reflection.macro == macro } if macro association_reflections end  | 
  
#reflect_on_all_autosave_associations ⇒ Object
      134 135 136  | 
    
      # File 'lib/active_fedora/reflection.rb', line 134 def reflect_on_all_autosave_associations reflections.values.select { |reflection| reflection.[:autosave] } end  | 
  
#reflect_on_association(association) ⇒ Object
Returns the AssociationReflection object for the association (use the symbol).
Account.reflect_on_association(:owner)             # returns the owner AssociationReflection
Invoice.reflect_on_association(:line_items).macro  # returns :has_many
  
      103 104 105  | 
    
      # File 'lib/active_fedora/reflection.rb', line 103 def reflect_on_association(association) _reflect_on_association(association) end  | 
  
#reflections ⇒ Object
Returns a hash containing all AssociationReflection objects for the current class. Example:
Invoice.reflections
Account.reflections
  
      63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80  | 
    
      # File 'lib/active_fedora/reflection.rb', line 63 def reflections @__reflections ||= begin ref = {} _reflections.each do |name, reflection| parent_reflection = reflection.parent_reflection if parent_reflection parent_name = parent_reflection.name ref[parent_name.to_s] = parent_reflection else ref[name] = reflection end end ref end end  |