Sha256: 516d56d4670db4c4abda6b264eadc3173855352ef331ef622ca7df3196414c4c

Contents?: true

Size: 1.3 KB

Versions: 37

Compression:

Stored size: 1.3 KB

Contents

module Plutonium
  module Core
    module Fields
      module Inputs
        class PolymorphicBelongsToAssociationInput < SimpleFormAssociationInput
          def render
            form.input param, **options
          end

          private

          def param
            :"#{reflection.name}_sgid"
          end

          def input_options
            collection = @user_options.delete(:collection).presence || associated_classes
            {
              as: :grouped_select,
              collection:,
              label: reflection.name.to_s.humanize,
              group_label_method: :first,
              group_method: :last, include_blank: "Select One"
            }
          end

          def associated_classes
            Plutonium.eager_load_rails!

            associated_classes = []
            ActiveRecord::Base.descendants.each do |model|
              next unless model.table_exists?
              model.reflect_on_all_associations(:has_many).each do |association|
                if association.options[:as] == reflection.name
                  associated_classes << model
                end
              end
            end

            associated_classes.map { |klass|
              [klass.model_name.human.pluralize, klass.all]
            }.to_h
          end
        end
      end
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
plutonium-0.16.5 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.16.4 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.16.3 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.16.1 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.16.0 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.24 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.23 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.22 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.21 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.20 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.19 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.18 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.17 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.16 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.15 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.14 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.13 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.12 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.11 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb
plutonium-0.15.10 lib/plutonium/core/fields/inputs/polymorphic_belongs_to_association_input.rb