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