# 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
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
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