Sha256: 09ac0a1ae3614d149a540c14cafd8a1faf389ce98fd353a9c5b792c2b621924c
Contents?: true
Size: 1.4 KB
Versions: 2
Compression:
Stored size: 1.4 KB
Contents
module ExpectedBehavior module ActsAsArchival module AssociationOperation class Base attr_reader :model, :head_archive_number def initialize(model, head_archive_number) @model = model @head_archive_number = head_archive_number end def execute each_archivable_association do |association| act_on_association(association) if association_conditions_met? association end end protected def each_archivable_association model.class.reflect_on_all_associations.each do |association| yield(association) if archivable_association?(association) end end def archivable_association?(association) association.macro.to_s =~ /^has/ && association.klass.archival? && association.options[:through].nil? end def association_conditions_met?(_association) true end def act_on_association(association) key = association.respond_to?(:foreign_key) ? association.foreign_key : association.primary_key_name scope = association.klass.where(key => model.id) act_on_archivals(scope) end def act_on_archivals(_scope) raise NotImplementedError.new("The #{self.class} hasn't implemented 'act_on_archivals(scope)'") end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
acts_as_archival-1.3.0 | lib/expected_behavior/association_operation/base.rb |
acts_as_archival-1.2.0 | lib/expected_behavior/association_operation/base.rb |