Module: ForestLiana::Utils::CompositePrimaryKeyHelper
- Defined in:
- app/services/forest_liana/utils/composite_primary_key_helper.rb
Class Method Summary collapse
Class Method Details
.find_record(scoped_records, resource, id) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 |
# File 'app/services/forest_liana/utils/composite_primary_key_helper.rb', line 4 def self.find_record(scoped_records, resource, id) primary_key = resource.primary_key if primary_key.is_a?(Array) id_values = parse_composite_id(id) conditions = primary_key.zip(id_values).to_h scoped_records.find_by(conditions) else scoped_records.find(id) end end |
.parse_composite_id(id) ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'app/services/forest_liana/utils/composite_primary_key_helper.rb', line 16 def self.parse_composite_id(id) return id if id.is_a?(Array) if id.to_s.start_with?('[') && id.to_s.end_with?(']') JSON.parse(id.to_s) else raise ForestLiana::Errors::HTTP422Error.new("Composite primary key ID must be in format [value1,value2], received: #{id}") end end |