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
102 103 104 105 106 107 108 109 110 |
# File 'lib/active_fedora/reflection.rb', line 102 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
89 90 91 |
# File 'lib/active_fedora/reflection.rb', line 89 def child_resource_reflections reflect_on_all_associations(:contains).select { |_, reflection| reflection.klass <= ActiveFedora::File } end |
#clear_reflections_cache ⇒ Object
:nodoc:
116 117 118 |
# File 'lib/active_fedora/reflection.rb', line 116 def clear_reflections_cache # :nodoc: @__reflections = nil end |
#contained_rdf_source_reflections ⇒ Object
93 94 95 |
# File 'lib/active_fedora/reflection.rb', line 93 def contained_rdf_source_reflections reflect_on_all_associations(:contains).select { |_, reflection| !(reflection.klass <= ActiveFedora::File) } end |
#outgoing_reflections ⇒ Object
85 86 87 |
# File 'lib/active_fedora/reflection.rb', line 85 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
70 71 72 73 74 |
# File 'lib/active_fedora/reflection.rb', line 70 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
112 113 114 |
# File 'lib/active_fedora/reflection.rb', line 112 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
81 82 83 |
# File 'lib/active_fedora/reflection.rb', line 81 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
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/active_fedora/reflection.rb', line 41 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 |