Module: EncodedId::Rails::EncoderMethods

Defined in:
lib/encoded_id/rails/encoder_methods.rb

Instance Method Summary collapse

Instance Method Details

#decode_encoded_id(slugged_encoded_id, options = {}) ⇒ Object



11
12
13
14
15
16
# File 'lib/encoded_id/rails/encoder_methods.rb', line 11

def decode_encoded_id(slugged_encoded_id, options = {})
  return if slugged_encoded_id.blank?
  encoded_id = encoded_id_parser(slugged_encoded_id).id
  return if !encoded_id || encoded_id.blank?
  encoded_id_coder(options).decode(encoded_id)
end

#encode_encoded_id(ids, options = {}) ⇒ Object

Raises:

  • (StandardError)


6
7
8
9
# File 'lib/encoded_id/rails/encoder_methods.rb', line 6

def encode_encoded_id(ids, options = {})
  raise StandardError, "You must pass an ID or array of IDs" if ids.blank?
  encoded_id_coder(options).encode(ids)
end

#encoded_id_coder(options = {}) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/encoded_id/rails/encoder_methods.rb', line 28

def encoded_id_coder(options = {})
  config = EncodedId::Rails.configuration
  EncodedId::Rails::Coder.new(
    salt: options[:salt] || encoded_id_salt,
    id_length: options[:id_length] || config.id_length,
    character_group_size: options[:character_group_size] || config.character_group_size,
    alphabet: options[:alphabet] || config.alphabet,
    separator: options[:separator] || config.group_separator
  )
end

#encoded_id_parser(slugged_encoded_id) ⇒ Object



24
25
26
# File 'lib/encoded_id/rails/encoder_methods.rb', line 24

def encoded_id_parser(slugged_encoded_id)
  SluggedIdParser.new(slugged_encoded_id, separator: EncodedId::Rails.configuration.slugged_id_separator)
end

#encoded_id_saltObject

This can be overridden in the model to provide a custom salt



19
20
21
22
# File 'lib/encoded_id/rails/encoder_methods.rb', line 19

def encoded_id_salt
  # @type self: Class
  EncodedId::Rails::Salt.new(self, EncodedId::Rails.configuration.salt).generate!
end