Class: ActiveRecord::Reflection::BelongsToReflection

Inherits:
AssociationReflection show all
Defined in:
lib/active_record/reflection.rb

Overview

:nodoc:

Instance Attribute Summary

Attributes inherited from AssociationReflection

#foreign_type, #parent_reflection, #type

Attributes inherited from MacroReflection

#active_record, #name, #options, #plural_name, #scope

Instance Method Summary collapse

Methods inherited from AssociationReflection

#active_record_primary_key, #add_as_polymorphic_through, #add_as_source, #add_as_through, #association_foreign_key, #association_scope_cache, #check_eager_loadable!, #check_validity!, #clear_association_scope_cache, #collect_join_chain, #collection?, #compute_class, #extensions, #foreign_key, #has_inverse?, #has_one?, #has_scope?, #initialize, #join_id_for, #join_primary_type, #join_table, #nested?, #polymorphic?, #polymorphic_inverse_of, #polymorphic_name, #source_reflection, #through_reflection, #validate?

Methods inherited from MacroReflection

#==, #_klass, #autosave=, #compute_class, #initialize, #klass, #scope_for

Methods inherited from AbstractReflection

#alias_candidate, #build_association, #build_scope, #chain, #check_validity_of_inverse!, #class_name, #constraints, #counter_cache_column, #counter_must_be_updated_by_has_many?, #has_active_cached_counter?, #has_cached_counter?, #initialize, #inverse_of, #inverse_updates_counter_in_memory?, #inverse_which_updates_counter_cache, #join_scope, #join_scopes, #klass_join_scope, #scopes, #strict_loading?, #strict_loading_violation_message, #table_name, #through_reflection?

Constructor Details

This class inherits a constructor from ActiveRecord::Reflection::AssociationReflection

Instance Method Details

#association_classObject



917
918
919
920
921
922
923
# File 'lib/active_record/reflection.rb', line 917

def association_class
  if polymorphic?
    Associations::BelongsToPolymorphicAssociation
  else
    Associations::BelongsToAssociation
  end
end

#association_primary_key(klass = nil) ⇒ Object

klass option is necessary to support loading polymorphic associations



926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
# File 'lib/active_record/reflection.rb', line 926

def association_primary_key(klass = nil)
  if primary_key = options[:primary_key]
    @association_primary_key ||= if primary_key.is_a?(Array)
      primary_key.map { |pk| pk.to_s.freeze }.freeze
    else
      -primary_key.to_s
    end
  elsif (klass || self.klass).has_query_constraints? || options[:query_constraints]
    (klass || self.klass).composite_query_constraints_list
  elsif (klass || self.klass).composite_primary_key?
    # If klass has composite primary key of shape [:<tenant_key>, :id], infer primary_key as :id
    primary_key = (klass || self.klass).primary_key
    primary_key.include?("id") ? "id" : primary_key
  else
    primary_key(klass || self.klass)
  end
end

#belongs_to?Boolean

Returns:

  • (Boolean)


915
# File 'lib/active_record/reflection.rb', line 915

def belongs_to?; true; end

#join_foreign_keyObject



948
949
950
# File 'lib/active_record/reflection.rb', line 948

def join_foreign_key
  foreign_key
end

#join_foreign_typeObject



952
953
954
# File 'lib/active_record/reflection.rb', line 952

def join_foreign_type
  foreign_type
end

#join_primary_key(klass = nil) ⇒ Object



944
945
946
# File 'lib/active_record/reflection.rb', line 944

def join_primary_key(klass = nil)
  polymorphic? ? association_primary_key(klass) : association_primary_key
end

#macroObject



913
# File 'lib/active_record/reflection.rb', line 913

def macro; :belongs_to; end