Module: EncodedId::Rails::EncoderMethods
- Defined in:
- lib/encoded_id/rails/encoder_methods.rb
Overview
Provides methods for encoding and decoding IDs, extended into ActiveRecord models.
Instance Method Summary collapse
- #decode_encoded_id(slugged_encoded_id, options = {}) ⇒ Object
-
#encode_encoded_id(ids, options = {}) ⇒ Object
@rbs! interface _EncodedIdModel def encoded_id_options: () -> Hash[Symbol, untyped] end.
- #encoded_id_coder(options = {}) ⇒ Object
-
#encoded_id_salt ⇒ Object
This can be overridden in the model to provide a custom salt.
Instance Method Details
#decode_encoded_id(slugged_encoded_id, options = {}) ⇒ Object
20 21 22 23 24 25 26 27 28 |
# File 'lib/encoded_id/rails/encoder_methods.rb', line 20 def decode_encoded_id(slugged_encoded_id, = {}) return if slugged_encoded_id.blank? raise StandardError, "You must pass a string encoded ID" unless slugged_encoded_id.is_a?(String) config = EncodedId::Rails.configuration annotated_encoded_id = SluggedIdParser.new(slugged_encoded_id, separator: config.slugged_id_separator).id encoded_id = AnnotatedIdParser.new(annotated_encoded_id, separator: config.annotated_id_separator).id return if !encoded_id || encoded_id.blank? encoded_id_coder().decode(encoded_id) end |
#encode_encoded_id(ids, options = {}) ⇒ Object
@rbs!
interface _EncodedIdModel
def encoded_id_options: () -> Hash[Symbol, untyped]
end
14 15 16 17 |
# File 'lib/encoded_id/rails/encoder_methods.rb', line 14 def encode_encoded_id(ids, = {}) raise StandardError, "You must pass an ID or array of IDs" if ids.blank? encoded_id_coder().encode(ids) end |
#encoded_id_coder(options = {}) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/encoded_id/rails/encoder_methods.rb', line 39 def encoded_id_coder( = {}) config = EncodedId::Rails.configuration # Merge model-level options with call-time options (call-time options take precedence) # @type var model_options: Hash[Symbol, untyped] = respond_to?(:encoded_id_options) ? : {} #: Hash[Symbol, untyped] = .merge() EncodedId::Rails::Coder.new( salt: [:salt] || encoded_id_salt, id_length: [:id_length] || config.id_length, character_group_size: .key?(:character_group_size) ? [:character_group_size] : config.character_group_size, alphabet: [:alphabet] || config.alphabet, separator: .key?(:separator) ? [:separator] : config.group_separator, encoder: [:encoder] || config.encoder, blocklist: [:blocklist] || config.blocklist, blocklist_mode: [:blocklist_mode] || config.blocklist_mode, blocklist_max_length: [:blocklist_max_length] || config.blocklist_max_length, downcase_on_decode: .key?(:downcase_on_decode) ? [:downcase_on_decode] : config.downcase_on_decode ) end |