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 |