Sha256: 26beb01082738dbe1f761056634922b49ab18ebbee738cfa98ed292aaf707e69
Contents?: true
Size: 1.33 KB
Versions: 60
Compression:
Stored size: 1.33 KB
Contents
# require "eitil_core/application_controller/permit_model_atts" require "pry" module ActionController class Parameters def permit_model_atts(*models, include: nil, except: nil, arrays: nil, hashes: nil) models = models.is_a?(Array) ? models : [models] except = except.is_a?(Array) ? except : [except] include = include.is_a?(Array) ? include : [include] arrays = arrays.is_a?(Array) ? arrays : [arrays] hashes = hashes.is_a?(Array) ? hashes : [hashes] columns = models.map do |model| model.columns_hash.keys.map &:to_sym end.flatten.uniq default_reject = %i( id updated_at created_at ) given_reject = except.map { |key| key&.to_sym } accepted_values = columns + include - default_reject - given_reject arrays = arrays.all?(&:present?) ? arrays.each_with_object({}) { |i,h| h[i] = [] } : nil hashes = hashes.all?(&:present?) ? hashes.each_with_object({}) { |i,h| h[i] = {} } : nil if arrays.blank? and hashes.blank? return self.permit(*accepted_values) elsif arrays.blank? return self.permit(*accepted_values, **hashes) elsif hashes.blank? return self.permit(*accepted_values, **arrays) else return self.permit(*accepted_values, **arrays, **hashes) end end end end
Version data entries
60 entries across 60 versions & 1 rubygems