Sha256: ff08131f9a0cbe48557aa4516611da027e4226adfd707618f8dd04942ab92e66

Contents?: true

Size: 714 Bytes

Versions: 3

Compression:

Stored size: 714 Bytes

Contents

# require "eitil_core/application_controller/permit_model_atts"

module ActionController
  class Parameters

    def permit_model_atts(*models, include: nil, except: nil)
      
      models  = models.is_a?(Array) ? models : [models]
      except  = except.is_a?(Array) ? except : [except]
      include = include.is_a?(Array) ? include : [include]

      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     

      return self.permit(*accepted_values)
    end

  end
end

 

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
eitil-1.1.8 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.1.7 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb
eitil-1.1.6 eitil_core/lib/eitil_core/application_controller/permit_model_atts.rb