Module: ActiveRecord::Bitemporal
- Extended by:
- Optionable, ActiveSupport::Concern
- Defined in:
- lib/activerecord-bitemporal/bitemporal.rb,
lib/activerecord-bitemporal/version.rb,
lib/activerecord-bitemporal/callbacks.rb,
lib/activerecord-bitemporal/global_id.rb,
lib/activerecord-bitemporal/bitemporal.rb,
lib/activerecord-bitemporal/visualizer.rb,
lib/activerecord-bitemporal/bitemporal_checker.rb,
lib/activerecord-bitemporal/patches.rb,
lib/activerecord-bitemporal/errors.rb,
lib/activerecord-bitemporal/scope.rb,
lib/activerecord-bitemporal.rb
Overview
Add Optionable to Bitemporal Example: ActiveRecord::Bitemporal.valid_at(“2018/4/1”)
Defined Under Namespace
Modules: BitemporalChecker, Bitemporalize, Callbacks, CollectionProxy, GlobalID, NodeBitemporalInclude, Optionable, Patches, Persistence, Relation, Scope, Uniqueness, Visualizer
Classes: BitemporalError, Current, ValidDatetimeRangeError
Constant Summary
collapse
- VERSION =
"6.1.0"
- DEFAULT_VALID_FROM =
Time.utc(1900, 12, 31).in_time_zone.freeze
- DEFAULT_VALID_TO =
Time.utc(9999, 12, 31).in_time_zone.freeze
- DEFAULT_TRANSACTION_FROM =
Time.utc(1900, 12, 31).in_time_zone.freeze
- DEFAULT_TRANSACTION_TO =
Time.utc(9999, 12, 31).in_time_zone.freeze
Class Method Summary
collapse
Methods included from Optionable
bitemporal_option, bitemporal_option_merge!, with_bitemporal_option
Class Method Details
.bitemporal_at(datetime, &block) ⇒ Object
83
84
85
|
# File 'lib/activerecord-bitemporal/bitemporal.rb', line 83
def bitemporal_at(datetime, &block)
transaction_at(datetime) { valid_at(datetime, &block) }
end
|
.bitemporal_at!(datetime, &block) ⇒ Object
87
88
89
|
# File 'lib/activerecord-bitemporal/bitemporal.rb', line 87
def bitemporal_at!(datetime, &block)
transaction_at!(datetime) { valid_at!(datetime, &block) }
end
|
.ignore_transaction_datetime(&block) ⇒ Object
79
80
81
|
# File 'lib/activerecord-bitemporal/bitemporal.rb', line 79
def ignore_transaction_datetime(&block)
with_bitemporal_option(ignore_transaction_datetime: true, transaction_datetime: nil, &block)
end
|
.ignore_valid_datetime(&block) ⇒ Object
63
64
65
|
# File 'lib/activerecord-bitemporal/bitemporal.rb', line 63
def ignore_valid_datetime(&block)
with_bitemporal_option(ignore_valid_datetime: true, valid_datetime: nil, &block)
end
|
.merge_by(option) ⇒ Object
91
92
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/activerecord-bitemporal/bitemporal.rb', line 91
def merge_by(option)
option_ = option.dup
if bitemporal_option_storage[:force_valid_datetime]
option_.merge!(valid_datetime: bitemporal_option_storage[:valid_datetime])
end
if bitemporal_option_storage[:force_transaction_datetime]
option_.merge!(transaction_datetime: bitemporal_option_storage[:transaction_datetime])
end
bitemporal_option_storage.merge(option_)
end
|
.transaction_at(datetime, &block) ⇒ Object
67
68
69
|
# File 'lib/activerecord-bitemporal/bitemporal.rb', line 67
def transaction_at(datetime, &block)
with_bitemporal_option(ignore_transaction_datetime: false, transaction_datetime: datetime, &block)
end
|
.transaction_at!(datetime, &block) ⇒ Object
71
72
73
|
# File 'lib/activerecord-bitemporal/bitemporal.rb', line 71
def transaction_at!(datetime, &block)
with_bitemporal_option(ignore_transaction_datetime: false, transaction_datetime: datetime, force_transaction_datetime: true, &block)
end
|
.transaction_datetime ⇒ Object
75
76
77
|
# File 'lib/activerecord-bitemporal/bitemporal.rb', line 75
def transaction_datetime
bitemporal_option[:transaction_datetime]&.in_time_zone
end
|
.valid_at(datetime, &block) ⇒ Object
47
48
49
|
# File 'lib/activerecord-bitemporal/bitemporal.rb', line 47
def valid_at(datetime, &block)
with_bitemporal_option(ignore_valid_datetime: false, valid_datetime: datetime, &block)
end
|
.valid_at!(datetime, &block) ⇒ Object
51
52
53
|
# File 'lib/activerecord-bitemporal/bitemporal.rb', line 51
def valid_at!(datetime, &block)
with_bitemporal_option(ignore_valid_datetime: false, valid_datetime: datetime, force_valid_datetime: true, &block)
end
|
.valid_date ⇒ Object
59
60
61
|
# File 'lib/activerecord-bitemporal/bitemporal.rb', line 59
def valid_date
valid_datetime&.to_date
end
|
.valid_datetime ⇒ Object
55
56
57
|
# File 'lib/activerecord-bitemporal/bitemporal.rb', line 55
def valid_datetime
bitemporal_option[:valid_datetime]&.in_time_zone
end
|