module HashSerializer::Helpers

Helper methods for generating methods from hash keys and validating keys

Public Instance Methods

validate_hash_serializer_keys(hash_name, valid_keys) click to toggle source

Validates a Postgres JSON hash on an ActiveRecord model does not include extra keys. It prevents user created data on JSON column types.

Example:

>> validate_hash_serializer :billing_hash, %w(name address city state)

@param hash_name [Symbol, String] @param valid_keys [Array]

@return [Array] a sorted Array of the invalid keys

# File lib/hash_serializer/helpers.rb, line 19
def validate_hash_serializer_keys(hash_name, valid_keys)
  return if send(hash_name).nil? # || !send("#{hash_name}_changed?")

  invalid_keys = send(hash_name).keys.map(&:to_s) - valid_keys.map(&:to_s)
  return if invalid_keys.empty?

  invalid_keys.sort
end