diff --git a/lib/stream_rails/enrich.rb b/lib/stream_rails/enrich.rb index 30ffceb..3f01729 100644 --- a/lib/stream_rails/enrich.rb +++ b/lib/stream_rails/enrich.rb @@ -40,10 +40,12 @@ def add_fields(new_fields) def model_field?(field_value) return false unless field_value.respond_to?('split') - bits = field_value.split(':') - return false if bits.length < 2 + + model, _, id = field_value.rpartition(':') + return false unless model.present? && id.present? + begin - bits[0].classify.constantize + model.classify.constantize rescue NameError return false else @@ -75,7 +77,7 @@ def collect_references(activities) activities.each do |activity| activity.select { |k, _v| @fields.include? k.to_sym }.each do |_field, value| next unless model_field?(value) - model, id = value.split(':') + model, _, id = value.rpartition(':') model_refs[model][id] = 0 end end @@ -90,7 +92,7 @@ def inject_objects(activities, objects) create_activity_results(activities).each do |activity| activity.select { |k, _v| @fields.include? k.to_sym }.each do |field, value| next unless model_field?(value) - model, id = value.split(':') + model, _, id = value.rpartition(':') activity[field] = objects[model][id] || value activity.track_not_enriched_field(field, value) if objects[model][id].nil? end