module Immortal::SingularAssociation
Mixin to provide the singular association readers for _only_deleted
and _with_deleted
.
Attributes
only_deleted_loaded[R]
only_deleted_loaded?[R]
only_deleted_target[R]
with_deleted_loaded[R]
with_deleted_loaded?[R]
with_deleted_target[R]
Public Instance Methods
only_deleted_reader(force_reload = false)
click to toggle source
# File lib/immortal/singular_association.rb, line 11 def only_deleted_reader(force_reload = false) reader_only_deleted(force_reload) end
with_deleted_reader(force_reload = false)
click to toggle source
# File lib/immortal/singular_association.rb, line 7 def with_deleted_reader(force_reload = false) reader_with_deleted(force_reload) end
Private Instance Methods
find_only_deleted_target()
click to toggle source
# File lib/immortal/singular_association.rb, line 124 def find_only_deleted_target return nil unless klass klass.unscoped do scope.where(deleted: true).first.tap do |record| set_inverse_instance(record) end end end
find_only_deleted_target?()
click to toggle source
# File lib/immortal/singular_association.rb, line 69 def find_only_deleted_target? !only_deleted_loaded? && (!owner.new_record? || foreign_key_present?) && klass end
find_with_deleted_target()
click to toggle source
# File lib/immortal/singular_association.rb, line 117 def find_with_deleted_target return nil unless klass klass.unscoped do scope.first.tap { |record| set_inverse_instance(record) } end end
find_with_deleted_target?()
click to toggle source
# File lib/immortal/singular_association.rb, line 63 def find_with_deleted_target? !with_deleted_loaded? && (!owner.new_record? || foreign_key_present?) && klass end
load_only_deleted_target()
click to toggle source
# File lib/immortal/singular_association.rb, line 86 def load_only_deleted_target if find_only_deleted_target? @only_deleted_target ||= find_only_deleted_target end only_deleted_loaded! unless only_deleted_loaded? only_deleted_target rescue ActiveRecord::RecordNotFound only_deleted_reset end
load_with_deleted_target()
click to toggle source
# File lib/immortal/singular_association.rb, line 75 def load_with_deleted_target if find_with_deleted_target? @with_deleted_target ||= find_with_deleted_target end with_deleted_loaded! unless with_deleted_loaded? with_deleted_target rescue ActiveRecord::RecordNotFound with_deleted_reset end
only_deleted_loaded!()
click to toggle source
# File lib/immortal/singular_association.rb, line 36 def only_deleted_loaded! @only_deleted_loaded = true @only_deleted_stale_state = stale_state end
reader_only_deleted(force_reload = false)
click to toggle source
# File lib/immortal/singular_association.rb, line 107 def reader_only_deleted(force_reload = false) if force_reload klass.uncached { reload_only_deleted } if klass elsif !only_deleted_loaded? || stale_only_deleted_target? reload_only_deleted end only_deleted_target end
reader_with_deleted(force_reload = false)
click to toggle source
# File lib/immortal/singular_association.rb, line 97 def reader_with_deleted(force_reload = false) if force_reload klass.uncached { reload_with_deleted } if klass elsif !with_deleted_loaded? || stale_with_deleted_target? reload_with_deleted end with_deleted_target end
reload_only_deleted()
click to toggle source
# File lib/immortal/singular_association.rb, line 49 def reload_only_deleted reset_only_deleted reset_scope load_only_deleted_target self if only_deleted_target end
reload_with_deleted()
click to toggle source
# File lib/immortal/singular_association.rb, line 56 def reload_with_deleted reset_with_deleted reset_scope load_with_deleted_target self if with_deleted_target end
reset_only_deleted()
click to toggle source
# File lib/immortal/singular_association.rb, line 26 def reset_only_deleted @only_deleted_loaded = false @only_deleted_target = nil end
reset_with_deleted()
click to toggle source
# File lib/immortal/singular_association.rb, line 21 def reset_with_deleted @with_deleted_loaded = false @with_deleted_target = nil end
stale_only_deleted_target?()
click to toggle source
# File lib/immortal/singular_association.rb, line 45 def stale_only_deleted_target? only_deleted_loaded? && @only_deleted_stale_state != stale_state end
stale_with_deleted_target?()
click to toggle source
# File lib/immortal/singular_association.rb, line 41 def stale_with_deleted_target? with_deleted_loaded? && @with_deleted_stale_state != stale_state end
with_deleted_loaded!()
click to toggle source
# File lib/immortal/singular_association.rb, line 31 def with_deleted_loaded! @with_deleted_loaded = true @with_deleted_stale_state = stale_state end