# File lib/sequel/model/associations.rb 987 def primary_key 988 cached_fetch(:primary_key){associated_class.primary_key || raise(Error, "no primary key specified for #{associated_class.inspect}")} 989 end
class Sequel::Model::Associations::ManyToOneAssociationReflection
Constants
- FINALIZE_SETTINGS
Public Instance Methods
Source
# File lib/sequel/model/associations.rb 933 def can_have_associated_objects?(obj) 934 !self[:keys].any?{|k| obj.get_column_value(k).nil?} 935 end
many_to_one associations can only have associated objects if none of the :keys options have a nil value.
Source
# File lib/sequel/model/associations.rb 938 def dataset_need_primary_key? 939 false 940 end
Whether the dataset needs a primary key to function, false for many_to_one associations.
Source
# File lib/sequel/model/associations.rb 944 def default_key 945 :"#{self[:name]}_id" 946 end
Default foreign key name symbol for foreign key in current model’s table that points to the given association’s table’s primary key.
Source
# File lib/sequel/model/associations.rb 950 def eager_graph_lazy_dataset? 951 self[:key].nil? 952 end
Whether to eagerly graph a lazy dataset, true for many_to_one associations only if the key is nil.
Source
# File lib/sequel/model/associations.rb 955 def eager_graph_limit_strategy(_) 956 nil 957 end
many_to_one associations don’t need an eager_graph limit strategy
Source
# File lib/sequel/model/associations.rb 960 def eager_limit_strategy 961 nil 962 end
many_to_one associations don’t need an eager limit strategy
Source
# File lib/sequel/model/associations.rb 965 def filter_by_associations_limit_strategy 966 nil 967 end
many_to_one associations don’t need a filter by associations limit strategy
Source
# File lib/sequel/model/associations.rb 977 def finalize_settings 978 FINALIZE_SETTINGS 979 end
Source
# File lib/sequel/model/associations.rb 982 def predicate_key 983 cached_fetch(:predicate_key){qualified_primary_key} 984 end
The expression to use on the left hand side of the IN lookup when eager loading
Source
The column(s) in the associated table that the key in the current table references (either a symbol or an array).
Source
# File lib/sequel/model/associations.rb 999 def primary_key_method 1000 cached_fetch(:primary_key_method){primary_key} 1001 end
The method symbol or array of method symbols to call on the associated object to get the value to use for the foreign keys.
Source
# File lib/sequel/model/associations.rb 1005 def primary_key_methods 1006 cached_fetch(:primary_key_methods){Array(primary_key_method)} 1007 end
The array of method symbols to call on the associated object to get the value to use for the foreign keys.
Source
# File lib/sequel/model/associations.rb 992 def primary_keys 993 cached_fetch(:primary_keys){Array(primary_key)} 994 end
The columns in the associated table that the key in the current table references (always an array).
Source
# File lib/sequel/model/associations.rb 1010 def qualified_primary_key 1011 cached_fetch(:qualified_primary_key){self[:qualify] == false ? primary_key : qualify_assoc(primary_key)} 1012 end
primary_key qualified by the associated table
Source
# File lib/sequel/model/associations.rb 1015 def reciprocal_array? 1016 !set_reciprocal_to_self? 1017 end
True only if the reciprocal is a one_to_many association.
Source
# File lib/sequel/model/associations.rb 1021 def returns_array? 1022 false 1023 end
Whether this association returns an array of objects instead of a single object, false for a many_to_one association.
Source
# File lib/sequel/model/associations.rb 1026 def set_reciprocal_to_self? 1027 reciprocal 1028 reciprocal_type == :one_to_one 1029 end
True only if the reciprocal is a one_to_one association.
Private Instance Methods
Source
# File lib/sequel/model/associations.rb 1035 def ambiguous_reciprocal_type? 1036 true 1037 end
Reciprocals of many_to_one associations could be either one_to_many or one_to_one, and which is not known in advance.
Source
# File lib/sequel/model/associations.rb 1039 def filter_by_associations_conditions_associated_keys 1040 qualify(associated_class.table_name, primary_keys) 1041 end
Source
# File lib/sequel/model/associations.rb 1043 def filter_by_associations_conditions_key 1044 qualify(self[:model].table_name, self[:key_column]) 1045 end
Source
# File lib/sequel/model/associations.rb 1049 def limit_to_single_row? 1050 super && self[:key] 1051 end
many_to_one associations do not need to be limited to a single row if they explicitly do not have a key.
Sequel::Model::Associations::AssociationReflection#limit_to_single_row?
Source
# File lib/sequel/model/associations.rb 1059 def possible_reciprocal_types 1060 [:one_to_many, :one_to_one] 1061 end
The reciprocal type of a many_to_one association is either a one_to_many or a one_to_one association.
Source
# File lib/sequel/model/associations.rb 1053 def predicate_key_methods 1054 self[:keys] 1055 end
Source
# File lib/sequel/model/associations.rb 1064 def reciprocal_association?(assoc_reflect) 1065 super && self[:keys] == assoc_reflect[:keys] && primary_key == assoc_reflect.primary_key 1066 end
Whether the given association reflection is possible reciprocal
Sequel::Model::Associations::AssociationReflection#reciprocal_association?
Source
# File lib/sequel/model/associations.rb 1071 def reciprocal_type 1072 cached_fetch(:reciprocal_type) do 1073 possible_recips = [] 1074 1075 associated_class.all_association_reflections.each do |assoc_reflect| 1076 if reciprocal_association?(assoc_reflect) 1077 possible_recips << assoc_reflect 1078 end 1079 end 1080 1081 if possible_recips.length == 1 1082 possible_recips.first[:type] 1083 else 1084 possible_reciprocal_types 1085 end 1086 end 1087 end
The reciprocal type of a many_to_one association is either a one_to_many or a one_to_one association, look in the associated class to try to figure out which.