class RailsAdmin::Adapters::ActiveRecord::Association

Attributes

association[R]
model[R]

Public Class Methods

new(association, model) click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 9
def initialize(association, model)
  @association = association
  @model = model
end

Public Instance Methods

as() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 99
def as
  options[:as].try :to_sym
end
association?() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 121
def association?
  true
end
field_type() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 26
def field_type
  if polymorphic?
    :polymorphic_association
  else
    :"#{association.macro}_association"
  end
end
foreign_inverse_of() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 80
def foreign_inverse_of
  nil
end
foreign_key() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 60
def foreign_key
  if association.options[:query_constraints].present?
    association.options[:query_constraints].map(&:to_sym)
  elsif association.foreign_key.is_a?(Array)
    association.foreign_key.map(&:to_sym)
  else
    association.foreign_key.to_sym
  end
end
foreign_key_nullable?() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 70
def foreign_key_nullable?
  return true if foreign_key.nil? || type != :has_many

  (column = klass.columns_hash[foreign_key.to_s]).nil? || column.null
end
foreign_type() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 76
def foreign_type
  options[:foreign_type].try(:to_sym) || :"#{name}_type" if options[:polymorphic]
end
inverse_of() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 107
def inverse_of
  options[:inverse_of].try :to_sym
end
key_accessor() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 84
def key_accessor
  case type
  when :has_many, :has_and_belongs_to_many
    :"#{name.to_s.singularize}_ids"
  when :has_one
    :"#{name}_id"
  else
    if foreign_key.is_a?(Array)
      :"#{name}_id"
    else
      foreign_key
    end
  end
end
klass() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 34
def klass
  if options[:polymorphic]
    polymorphic_parents(:active_record, association.active_record.name.to_s, name) || []
  else
    association.klass
  end
end
name() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 14
def name
  association.name.to_sym
end
nested_options() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 117
def nested_options
  model.nested_attributes_options.try { |o| o[name.to_sym] }
end
polymorphic?() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 103
def polymorphic?
  options[:polymorphic] || false
end
pretty_name() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 18
def pretty_name
  name.to_s.tr('_', ' ').capitalize
end
primary_key() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 42
def primary_key
  return nil if polymorphic?

  value =
    case type
    when :has_one
      association.klass.primary_key
    else
      association.association_primary_key
    end

  if value.is_a? Array
    :id
  else
    value.to_sym
  end
end
read_only?() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 111
def read_only?
  (klass.all.instance_exec(&scope).readonly_value if scope.is_a?(Proc) && scope.arity == 0) ||
    association.nested? ||
    false
end
type() click to toggle source
# File lib/rails_admin/adapters/active_record/association.rb, line 22
def type
  association.macro
end