Sha256: c5e8944d931b6f5bdb09d9126cb20e6e1038ce4d2537c4e30226c8a1d384f1cd

Contents?: true

Size: 1.89 KB

Versions: 4

Compression:

Stored size: 1.89 KB

Contents

# frozen_string_literal: true

require 'rails_admin/config/fields/singular_association'

module RailsAdmin
  module Config
    module Fields
      module Types
        class BelongsToAssociation < RailsAdmin::Config::Fields::SingularAssociation
          RailsAdmin::Config::Fields::Types.register(self)

          register_instance_option :sortable do
            @sortable ||= abstract_model.adapter_supports_joins? && associated_model_config.abstract_model.properties.collect(&:name).include?(associated_model_config.object_label_method) ? associated_model_config.object_label_method : {abstract_model.table_name => method_name}
          end

          register_instance_option :searchable do
            @searchable ||= associated_model_config.abstract_model.properties.collect(&:name).include?(associated_model_config.object_label_method) ? [associated_model_config.object_label_method, {abstract_model.model => method_name}] : {abstract_model.model => method_name}
          end

          register_instance_option :eager_load do
            true
          end

          register_instance_option :allowed_methods do
            nested_form ? [method_name] : Array(association.foreign_key)
          end

          def selected_id
            if association.foreign_key.is_a?(Array)
              format_key(association.foreign_key.map { |attribute| bindings[:object].safe_send(attribute) })
            else
              bindings[:object].safe_send(association.key_accessor)
            end
          end

          def parse_input(params)
            return super if nested_form
            return unless params[method_name].present? && association.foreign_key.is_a?(Array)

            association.foreign_key.zip(RailsAdmin.config.composite_keys_serializer.deserialize(params.delete(method_name))).each do |key, value|
              params[key] = value
            end
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rails_admin-3.3.0 lib/rails_admin/config/fields/types/belongs_to_association.rb
rails_admin-3.2.1 lib/rails_admin/config/fields/types/belongs_to_association.rb
rails_admin-3.2.0 lib/rails_admin/config/fields/types/belongs_to_association.rb
rails_admin-3.2.0.rc lib/rails_admin/config/fields/types/belongs_to_association.rb