Sha256: 0646486440ae06305072199887acc5f89f852e53d16f6a429bbb150287523e11

Contents?: true

Size: 1.06 KB

Versions: 5

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module Effective
  module EffectiveDatatable
    module Attributes

      private

      def assert_attributes!
        if datatables_ajax_request? || datatables_inline_request?
          raise 'expected attributes to be present' unless attributes.present?
        end
      end

      def load_attributes!
        return unless view.respond_to?(:controller_path)
        @attributes[:namespace] ||= view.controller_path.split('/')[0...-1].join('/')
      end

      # Polymorphic shorthand attributes.
      # If you pass resource: User(1), it sets resource_id: 1, resource_type: 'User'
      def initial_attributes(attributes)
        return {} if attributes.blank?

        resources = attributes.select { |k, v| v.kind_of?(ActiveRecord::Base) }
        return attributes if resources.blank?

        retval = attributes.except(*resources.keys)

        resources.each do |k, resource|
          retval["#{k}_type".to_sym] = resource.class.name
          retval["#{k}_id".to_sym] = resource.id
        end

        retval
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
effective_datatables-4.22.1 app/models/effective/effective_datatable/attributes.rb
effective_datatables-4.22.0 app/models/effective/effective_datatable/attributes.rb
effective_datatables-4.21.1 app/models/effective/effective_datatable/attributes.rb
effective_datatables-4.21.0 app/models/effective/effective_datatable/attributes.rb
effective_datatables-4.20.6 app/models/effective/effective_datatable/attributes.rb