prefixed_ids 1.9.0 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1bac5b304f58877aefa5452f7e1532a65071b7f2eeadd6347a144326d86737cd
4
- data.tar.gz: 91facf11c39db364b50ca88138429308436328f22446b19d8d6a6e2c835c51d8
3
+ metadata.gz: 7b277a81ffce06f880d103b39475fe1a31ea6a5b500d1e6d79bd6c94df2628c3
4
+ data.tar.gz: b1f2e91a1da643822be3fbb51a13eff396215a439a80ef69f79407d4162d6a49
5
5
  SHA512:
6
- metadata.gz: 48048178e689a688bae0f048a8b08fe246dc2b60de2a339e3458117d2945b15757b1c1888b655e2306883a78e345256cf23f565b29a94f72972cf4b8c7043883
7
- data.tar.gz: 5ae3f646bd1df6a314e15c12a732257b1eb242058ec7775d75a60f9862ff5034e20d2eed190d88e4190456109d76754e4d56e7c970ef2a0e229d2d4aea9a1156
6
+ metadata.gz: faefa73733550962611641d5dee88178c13a11f0807c6f2e6237a8ceb523175b255e51c1d3738acf1c565305f39b0834d80aa2b58f69c56740efda944faf1f33
7
+ data.tar.gz: f0eaafaa720fb989ff0b11dcecdd6d22e3103303b23471b3c8af286332cc0962695435f5decff563ef614783c5fc17860f9afc042cd13988c977f192695fe3a3
@@ -5,6 +5,7 @@ module PrefixedIds
5
5
  TOKEN = 123
6
6
 
7
7
  def initialize(model, prefix, salt: PrefixedIds.salt, minimum_length: PrefixedIds.minimum_length, alphabet: PrefixedIds.alphabet, delimiter: PrefixedIds.delimiter, **options)
8
+ @model = model
8
9
  @prefix = prefix.to_s
9
10
  @delimiter = delimiter.to_s
10
11
  @hashids = Hashids.new("#{model.table_name}#{salt}", minimum_length, alphabet)
@@ -43,8 +44,14 @@ module PrefixedIds
43
44
  []
44
45
  end
45
46
 
47
+ # The number of IDs must match the primary key, so a hash of several IDs can't be used on a single column primary key
46
48
  def valid?(decoded_hashid)
47
- decoded_hashid.size >= 2 && decoded_hashid.first == TOKEN
49
+ decoded_hashid.first == TOKEN && decoded_hashid.size == primary_key_size + 1
50
+ end
51
+
52
+ # Read lazily since the primary key isn't known when `has_prefix_id` is called
53
+ def primary_key_size
54
+ Array.wrap(@model.primary_key).size
48
55
  end
49
56
  end
50
57
  end
@@ -1,3 +1,3 @@
1
1
  module PrefixedIds
2
- VERSION = "1.9.0"
2
+ VERSION = "1.9.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prefixed_ids
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 1.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Oliver