From e938c86c59cc72a07c5b7eeda74a265aa48db1ed Mon Sep 17 00:00:00 2001 From: Peter Labaj Date: Thu, 1 Aug 2024 07:08:03 +0200 Subject: [PATCH 1/2] Ensure that decode returns all parts of composite key --- CHANGELOG.md | 4 ++++ lib/prefixed_ids/prefix_id.rb | 4 ++-- test/prefixed_ids_test.rb | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eaca0e3..e66314d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ### Unreleased +* Ensure that decode returns all parts of composite key + +### 1.8.0 + * Add composite key support #70 ### 1.7.1 diff --git a/lib/prefixed_ids/prefix_id.rb b/lib/prefixed_ids/prefix_id.rb index 404465b..ab66751 100644 --- a/lib/prefixed_ids/prefix_id.rb +++ b/lib/prefixed_ids/prefix_id.rb @@ -25,8 +25,8 @@ def decode(id, fallback: false) if !valid?(decoded_hashid) fallback_value else - _, id, *composite = decoded_hashid - composite.empty? ? id : composite + _, *ids = decoded_hashid + ids.size == 1 ? ids.first : ids end end diff --git a/test/prefixed_ids_test.rb b/test/prefixed_ids_test.rb index 94dcf88..2ff248b 100644 --- a/test/prefixed_ids_test.rb +++ b/test/prefixed_ids_test.rb @@ -239,6 +239,9 @@ class PrefixedIdsTest < ActiveSupport::TestCase decoded = hashid.decode(second) assert_equal decoded.size, 2 assert_equal decoded, [1, 1] + + prefix_decoded = prefix.decode(first) + assert_equal prefix_decoded, [1, 1] end end end From 4579a41fdfe89cdaf338ff16cd17b3edefb09866 Mon Sep 17 00:00:00 2001 From: Chris Oliver Date: Thu, 1 Aug 2024 10:16:30 -0500 Subject: [PATCH 2/2] Update lib/prefixed_ids/prefix_id.rb --- lib/prefixed_ids/prefix_id.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/prefixed_ids/prefix_id.rb b/lib/prefixed_ids/prefix_id.rb index ab66751..5ff0c18 100644 --- a/lib/prefixed_ids/prefix_id.rb +++ b/lib/prefixed_ids/prefix_id.rb @@ -26,7 +26,7 @@ def decode(id, fallback: false) fallback_value else _, *ids = decoded_hashid - ids.size == 1 ? ids.first : ids + (ids.size == 1) ? ids.first : ids end end