module ActiveFedora::Reflection::ClassMethods
Public Instance Methods
_reflect_on_association(association)
click to toggle source
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
# 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()
click to toggle source
# 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
contained_rdf_source_reflections()
click to toggle source
# 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()
click to toggle source
# 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)
click to toggle source
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
# 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()
click to toggle source
# File lib/active_fedora/reflection.rb, line 134 def reflect_on_all_autosave_associations reflections.values.select { |reflection| reflection.options[:autosave] } end
reflect_on_association(association)
click to toggle source
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
# File lib/active_fedora/reflection.rb, line 103 def reflect_on_association(association) _reflect_on_association(association) end
reflections()
click to toggle source
Returns a hash containing all AssociationReflection
objects for the current class. Example:
Invoice.reflections Account.reflections
# 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