Module: ActiveRecord::Temporal::Querying

Extended by:
ActiveSupport::Concern
Defined in:
lib/activerecord/temporal/querying/predicate_builder/contains_handler.rb,
lib/activerecord/temporal/querying/predicate_builder/handlers.rb,
lib/activerecord/temporal/querying/where_clause_refinement.rb,
lib/activerecord/temporal/querying/association_walker.rb,
lib/activerecord/temporal/querying/association_macros.rb,
lib/activerecord/temporal/querying/association_scope.rb,
lib/activerecord/temporal/querying/time_dimensions.rb,
lib/activerecord/temporal/querying/scope_registry.rb,
lib/activerecord/temporal/querying/query_methods.rb,
lib/activerecord/temporal/querying/scoping.rb,
lib/activerecord/temporal/querying.rb

Defined Under Namespace

Modules: AssociationMacros, QueryMethods, TimeDimensions, WhereClauseRefinement Classes: AssociationScope, AssociationWalker, PredicateBuilder, RangeError, ScopeRegistry, Scoping

Instance Method Summary collapse

Instance Method Details

#as_of(time) ⇒ Object



69
70
71
72
73
# File 'lib/activerecord/temporal/querying.rb', line 69

def as_of(time)
  time_coords = resolve_time_coords(time)

  self.class.as_of(time_coords).find_by(self.class.primary_key => [id])
end

#as_of!(time) ⇒ Object



59
60
61
62
63
64
65
66
67
# File 'lib/activerecord/temporal/querying.rb', line 59

def as_of!(time)
  time_coords = resolve_time_coords(time)

  ensure_time_tags_in_bounds!(time_coords)

  reload

  self.time_tags = time_coords
end

#initialize_time_tags_from_relation(relation) ⇒ Object



75
76
77
78
79
80
81
82
83
# File 'lib/activerecord/temporal/querying.rb', line 75

def initialize_time_tags_from_relation(relation)
  associations = relation.includes_values | relation.eager_load_values

  self.time_tags = relation.time_tag_values

  AssociationWalker.each_target(self, associations) do |target|
    target.time_tags = relation.time_tag_values
  end
end

#time_tagObject



51
52
53
# File 'lib/activerecord/temporal/querying.rb', line 51

def time_tag
  time_tags[default_time_dimension]
end

#time_tagsObject



43
44
45
# File 'lib/activerecord/temporal/querying.rb', line 43

def time_tags
  @time_tags || {}
end

#time_tags=(value) ⇒ Object



47
48
49
# File 'lib/activerecord/temporal/querying.rb', line 47

def time_tags=(value)
  @time_tags = value&.slice(*time_dimensions)
end

#time_tags_for(time_dimensions) ⇒ Object



55
56
57
# File 'lib/activerecord/temporal/querying.rb', line 55

def time_tags_for(time_dimensions)
  time_tags.slice(*time_dimensions)
end