# File lib/sequel/model/associations.rb 1066 def primary_key 1067 self[:primary_key] 1068 end
class Sequel::Model::Associations::OneToManyAssociationReflection
Constants
- FINALIZE_SETTINGS
Public Instance Methods
Source
# File lib/sequel/model/associations.rb 1016 def apply_eager_graph_limit_strategy(strategy, ds) 1017 case strategy 1018 when :correlated_subquery 1019 apply_correlated_subquery_limit_strategy(ds) 1020 else 1021 super 1022 end 1023 end
Support a correlated subquery limit strategy when using eager_graph.
Sequel::Model::Associations::AssociationReflection#apply_eager_graph_limit_strategy
Source
# File lib/sequel/model/associations.rb 1026 def associated_object_keys 1027 self[:keys] 1028 end
The keys in the associated model’s table related to this association
Source
# File lib/sequel/model/associations.rb 1032 def can_have_associated_objects?(obj) 1033 !self[:primary_keys].any?{|k| obj.get_column_value(k).nil?} 1034 end
one_to_many associations can only have associated objects if none of the :keys options have a nil value.
Source
# File lib/sequel/model/associations.rb 1037 def cloneable?(ref) 1038 ref[:type] == :one_to_many || ref[:type] == :one_to_one 1039 end
one_to_many and one_to_one associations can be clones
Source
# File lib/sequel/model/associations.rb 1043 def default_key 1044 :"#{underscore(demodulize(self[:model].name))}_id" 1045 end
Default foreign key name symbol for key in associated table that points to current table’s primary key.
Source
# File lib/sequel/model/associations.rb 1050 def finalize_settings 1051 FINALIZE_SETTINGS 1052 end
Source
# File lib/sequel/model/associations.rb 1055 def handle_silent_modification_failure? 1056 self[:raise_on_save_failure] == false 1057 end
Handle silent failure of add/remove methods if raise_on_save_failure is false.
Source
# File lib/sequel/model/associations.rb 1060 def predicate_key 1061 cached_fetch(:predicate_key){qualify_assoc(self[:key])} 1062 end
The hash key to use for the eager loading predicate (left side of IN (1, 2, 3))
Source
The column in the current table that the key in the associated table references.
Source
# File lib/sequel/model/associations.rb 1071 def qualified_primary_key 1072 cached_fetch(:qualified_primary_key){qualify_cur(primary_key)} 1073 end
primary_key
qualified by the current table
Source
# File lib/sequel/model/associations.rb 1077 def reciprocal_array? 1078 false 1079 end
Whether the reciprocal of this association returns an array of objects instead of a single object, false for a one_to_many association.
Source
# File lib/sequel/model/associations.rb 1082 def remove_before_destroy? 1083 false 1084 end
Destroying one_to_many associated objects automatically deletes the foreign key.
Source
# File lib/sequel/model/associations.rb 1087 def remove_should_check_existing? 1088 true 1089 end
The one_to_many association needs to check that an object to be removed already is associated.
Source
# File lib/sequel/model/associations.rb 1092 def set_reciprocal_to_self? 1093 true 1094 end
One to many associations set the reciprocal to self when loading associated records.
Private Instance Methods
Source
# File lib/sequel/model/associations.rb 1116 def apply_filter_by_associations_limit_strategy(ds) 1117 case filter_by_associations_limit_strategy 1118 when :correlated_subquery 1119 apply_correlated_subquery_limit_strategy(ds) 1120 else 1121 super 1122 end 1123 end
Support correlated subquery strategy when filtering by limited associations.
Sequel::Model::Associations::AssociationReflection#apply_filter_by_associations_limit_strategy
Source
# File lib/sequel/model/associations.rb 1125 def filter_by_associations_conditions_associated_keys 1126 qualify(associated_class.table_name, self[:keys]) 1127 end
Source
# File lib/sequel/model/associations.rb 1129 def filter_by_associations_conditions_key 1130 qualify(self[:model].table_name, self[:primary_key_column]) 1131 end
Source
# File lib/sequel/model/associations.rb 1133 def filter_by_associations_limit_alias_key 1134 Array(filter_by_associations_limit_key) 1135 end
Source
# File lib/sequel/model/associations.rb 1137 def filter_by_associations_limit_aliases 1138 filter_by_associations_limit_alias_key.map(&:column) 1139 end
Source
# File lib/sequel/model/associations.rb 1141 def filter_by_associations_limit_key 1142 qualify(associated_class.table_name, associated_class.primary_key) 1143 end
Source
# File lib/sequel/model/associations.rb 1145 def predicate_key_methods 1146 self[:primary_keys] 1147 end
Source
# File lib/sequel/model/associations.rb 1149 def reciprocal_association?(assoc_reflect) 1150 super && self[:keys] == assoc_reflect[:keys] && primary_key == assoc_reflect.primary_key 1151 end
Sequel::Model::Associations::AssociationReflection#reciprocal_association?
Source
# File lib/sequel/model/associations.rb 1154 def reciprocal_type 1155 :many_to_one 1156 end
The reciprocal type of a one_to_many association is a many_to_one association.
Source
# File lib/sequel/model/associations.rb 1161 def true_eager_graph_limit_strategy 1162 r = super 1163 ds = associated_dataset 1164 if r == :ruby && ds.supports_limits_in_correlated_subqueries? && (Array(associated_class.primary_key).length == 1 || ds.supports_multiple_column_in?) && (!offset || ds.supports_offsets_in_correlated_subqueries?) 1165 :correlated_subquery 1166 else 1167 r 1168 end 1169 end
Support automatic use of correlated subqueries if :ruby option is best available option, the database supports them, and either the associated class has a non-composite primary key or the database supports multiple columns in IN.
Sequel::Model::Associations::AssociationReflection#true_eager_graph_limit_strategy