Class: RailsAdmin::Adapters::CompositePrimaryKeys::Association

Inherits:
ActiveRecord::Association show all
Defined in:
lib/rails_admin/adapters/composite_primary_keys/association.rb

Instance Attribute Summary

Attributes inherited from ActiveRecord::Association

#association, #model

Instance Method Summary collapse

Methods inherited from ActiveRecord::Association

#as, #association?, #foreign_inverse_of, #foreign_key_nullable?, #foreign_type, #initialize, #inverse_of, #klass, #name, #nested_options, #polymorphic?, #pretty_name, #read_only?, #type

Constructor Details

This class inherits a constructor from RailsAdmin::Adapters::ActiveRecord::Association

Instance Method Details

#field_typeObject



7
8
9
10
11
12
13
# File 'lib/rails_admin/adapters/composite_primary_keys/association.rb', line 7

def field_type
  if type == :belongs_to && association.foreign_key.is_a?(Array)
    :composite_keys_belongs_to_association
  else
    super
  end
end

#foreign_keyObject



27
28
29
30
31
32
33
# File 'lib/rails_admin/adapters/composite_primary_keys/association.rb', line 27

def foreign_key
  if association.foreign_key.is_a? Array
    association.foreign_key.map(&:to_sym)
  else
    super
  end
end

#key_accessorObject



35
36
37
38
39
40
41
# File 'lib/rails_admin/adapters/composite_primary_keys/association.rb', line 35

def key_accessor
  if type == :belongs_to && foreign_key.is_a?(Array)
    :"#{name}_id"
  else
    super
  end
end

#primary_keyObject



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/rails_admin/adapters/composite_primary_keys/association.rb', line 15

def primary_key
  return nil if polymorphic?

  value = association.association_primary_key

  if value.is_a? Array
    :id
  else
    value.to_sym
  end
end