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

Version Path
eitil-2.0.8 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-2.0.7 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-2.0.6 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-2.0.5 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-2.0.4 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-2.0.3 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-2.0.2 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-2.0.1 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-2.0.0 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.4.1 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.4.0 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.3.12 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.3.11 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.3.10 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.3.9 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.3.8 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.3.7 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.3.6 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.3.5 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.3.4 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb