Sha256: 564e8f894625d226db65556c3d650d0338df57355572f09cf4bd12d8d56eac3f
Contents?: true
Size: 1.31 KB
Versions: 2
Compression:
Stored size: 1.31 KB
Contents
# frozen_string_literal: true module SteelWheel # Allows to treat some error codes as :base # EX: # generic_validation_keys :not_found # errors.add(:not_found, 'Can not find') # errors.full_messages => ['Can not find'] # not ['Not found an not find'] module SkipActiveModelErrorsKeys def self.build_module Module.new do class << self attr_accessor :skip_keys def extended(klass) klass.include self end end end end # rubocop:disable Metrics/MethodLength def self.patch_errors_method_on_instance(mod, klass) class << klass alias_method :__new__, :new end klass.define_singleton_method :new do |*args| instance = __new__(*args) instance.errors.define_singleton_method :full_message do |attribute, message| return message if mod.skip_keys.include?(attribute) super(attribute, message) end instance end end # rubocop:enable Metrics/MethodLength def self.[](*skip_keys) mod = build_module mod.skip_keys = skip_keys builder = self mod.module_eval do define_singleton_method(:included) do |klass| builder.patch_errors_method_on_instance(self, klass) end end mod end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
steel_wheel-0.6.1 | lib/steel_wheel/skip_active_model_errors_keys.rb |
steel_wheel-0.6.0 | lib/steel_wheel/skip_active_model_errors_keys.rb |