Class: ActiveRecordGraphExtractor::PrimaryKeyMapper
- Inherits:
-
Object
- Object
- ActiveRecordGraphExtractor::PrimaryKeyMapper
- Defined in:
- lib/activerecord_graph_extractor/primary_key_mapper.rb
Instance Attribute Summary collapse
-
#strategy ⇒ Object
readonly
Returns the value of attribute strategy.
Instance Method Summary collapse
- #add_mapping(model_name, original_id, new_id) ⇒ Object
- #get_all_mappings ⇒ Object
- #get_mapping(model_name, original_id) ⇒ Object
-
#initialize(strategy = :generate_new) ⇒ PrimaryKeyMapper
constructor
A new instance of PrimaryKeyMapper.
- #map_foreign_key(column_name, original_value) ⇒ Object
- #should_preserve_primary_key? ⇒ Boolean
Constructor Details
#initialize(strategy = :generate_new) ⇒ PrimaryKeyMapper
Returns a new instance of PrimaryKeyMapper.
7 8 9 10 11 12 13 |
# File 'lib/activerecord_graph_extractor/primary_key_mapper.rb', line 7 def initialize(strategy = :generate_new) unless [:preserve_original, :generate_new].include?(strategy) raise ArgumentError, "Invalid strategy: #{strategy}. Must be :preserve_original or :generate_new" end @strategy = strategy @mappings = {} end |
Instance Attribute Details
#strategy ⇒ Object (readonly)
Returns the value of attribute strategy.
5 6 7 |
# File 'lib/activerecord_graph_extractor/primary_key_mapper.rb', line 5 def strategy @strategy end |
Instance Method Details
#add_mapping(model_name, original_id, new_id) ⇒ Object
15 16 17 18 19 |
# File 'lib/activerecord_graph_extractor/primary_key_mapper.rb', line 15 def add_mapping(model_name, original_id, new_id) model_key = model_name.to_s @mappings[model_key] ||= {} @mappings[model_key][original_id] = new_id end |
#get_all_mappings ⇒ Object
37 38 39 |
# File 'lib/activerecord_graph_extractor/primary_key_mapper.rb', line 37 def get_all_mappings @mappings.dup end |
#get_mapping(model_name, original_id) ⇒ Object
21 22 23 24 |
# File 'lib/activerecord_graph_extractor/primary_key_mapper.rb', line 21 def get_mapping(model_name, original_id) model_key = model_name.to_s @mappings.dig(model_key, original_id) end |
#map_foreign_key(column_name, original_value) ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/activerecord_graph_extractor/primary_key_mapper.rb', line 26 def map_foreign_key(column_name, original_value) return original_value if original_value.nil? # Try to infer the model name from the foreign key column model_name = infer_model_name(column_name) return original_value unless model_name # Look up the mapping get_mapping(model_name, original_value) || original_value end |
#should_preserve_primary_key? ⇒ Boolean
41 42 43 |
# File 'lib/activerecord_graph_extractor/primary_key_mapper.rb', line 41 def should_preserve_primary_key? @strategy == :preserve_original end |