Sha256: b040a74bc6c8ef9668f98c29c84f8e655b15adcb8855cbd68de01bebc0d57f1c

Contents?: true

Size: 1.3 KB

Versions: 30

Compression:

Stored size: 1.3 KB

Contents

require 'rails_admin/config/fields'
require 'rails_admin/config/fields/types'
require 'rails_admin/config/fields/types/belongs_to_association'

RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
  if association = parent.abstract_model.associations.detect { |a| a.foreign_key == properties.name && [:belongs_to, :has_and_belongs_to_many].include?(a.type) }
    field = RailsAdmin::Config::Fields::Types.load("#{association.polymorphic? ? :polymorphic : association.type}_association").new(parent, association.name, association)
    fields << field

    child_columns = []
    possible_field_names = begin
      if association.polymorphic?
        [:foreign_key, :foreign_type, :foreign_inverse_of]
      else
        [:foreign_key]
      end.collect { |k| association.send(k) }.compact
    end

    parent.abstract_model.properties.select { |p| possible_field_names.include? p.name }.each do |column|
      unless child_field = fields.detect { |f| f.name.to_s == column.name.to_s }
        child_field = RailsAdmin::Config::Fields.default_factory.call(parent, column, fields)
      end
      child_columns << child_field
    end

    child_columns.each do |child_column|
      child_column.hide
      child_column.filterable(false)
    end

    field.children_fields child_columns.collect(&:name)
  end
end

Version data entries

30 entries across 30 versions & 2 rubygems

Version Path
rails_admin-2.3.1 lib/rails_admin/config/fields/factories/association.rb
rails_admin-2.3.0 lib/rails_admin/config/fields/factories/association.rb
rails_admin-2.2.1 lib/rails_admin/config/fields/factories/association.rb
rails_admin-2.2.0 lib/rails_admin/config/fields/factories/association.rb
rails_admin-2.1.1 lib/rails_admin/config/fields/factories/association.rb
rails_admin-2.1.0 lib/rails_admin/config/fields/factories/association.rb
rails_admin-2.0.2 lib/rails_admin/config/fields/factories/association.rb
rails_admin-1.4.3 lib/rails_admin/config/fields/factories/association.rb
rails_admin-2.0.1 lib/rails_admin/config/fields/factories/association.rb
rails_admin-2.0.0 lib/rails_admin/config/fields/factories/association.rb
rails_admin-2.0.0.rc lib/rails_admin/config/fields/factories/association.rb
rails_admin-2.0.0.beta lib/rails_admin/config/fields/factories/association.rb
rails_admin-1.4.2 lib/rails_admin/config/fields/factories/association.rb
rails_admin-1.4.1 lib/rails_admin/config/fields/factories/association.rb
rails_admin-1.4.0 lib/rails_admin/config/fields/factories/association.rb
rails_admin-1.3.0 lib/rails_admin/config/fields/factories/association.rb
rails_admin-1.2.0 lib/rails_admin/config/fields/factories/association.rb
rails_admin-1.1.1 lib/rails_admin/config/fields/factories/association.rb
rails_admin-1.1.0 lib/rails_admin/config/fields/factories/association.rb
rails_admin-1.0.0 lib/rails_admin/config/fields/factories/association.rb