# File lib/sequel/model/associations.rb 1072 def primary_key 1073 self[:primary_key] 1074 end
class Sequel::Model::Associations::OneToManyAssociationReflection
Constants
- FINALIZE_SETTINGS
Public Instance Methods
Source
# File lib/sequel/model/associations.rb 1022 def apply_eager_graph_limit_strategy(strategy, ds) 1023 case strategy 1024 when :correlated_subquery 1025 apply_correlated_subquery_limit_strategy(ds) 1026 else 1027 super 1028 end 1029 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 1032 def associated_object_keys 1033 self[:keys] 1034 end
The keys in the associated model’s table related to this association
Source
# File lib/sequel/model/associations.rb 1038 def can_have_associated_objects?(obj) 1039 !self[:primary_keys].any?{|k| obj.get_column_value(k).nil?} 1040 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 1043 def cloneable?(ref) 1044 ref[:type] == :one_to_many || ref[:type] == :one_to_one 1045 end
one_to_many and one_to_one associations can be clones
Source
# File lib/sequel/model/associations.rb 1049 def default_key 1050 :"#{underscore(demodulize(self[:model].name))}_id" 1051 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 1056 def finalize_settings 1057 FINALIZE_SETTINGS 1058 end
Source
# File lib/sequel/model/associations.rb 1061 def handle_silent_modification_failure? 1062 self[:raise_on_save_failure] == false 1063 end
Handle silent failure of add/remove methods if raise_on_save_failure is false.
Source
# File lib/sequel/model/associations.rb 1066 def predicate_key 1067 cached_fetch(:predicate_key){qualify_assoc(self[:key])} 1068 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 1077 def qualified_primary_key 1078 cached_fetch(:qualified_primary_key){qualify_cur(primary_key)} 1079 end
primary_key
qualified by the current table
Source
# File lib/sequel/model/associations.rb 1083 def reciprocal_array? 1084 false 1085 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 1088 def remove_before_destroy? 1089 false 1090 end
Destroying one_to_many associated objects automatically deletes the foreign key.
Source
# File lib/sequel/model/associations.rb 1093 def remove_should_check_existing? 1094 true 1095 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 1098 def set_reciprocal_to_self? 1099 true 1100 end
One to many associations set the reciprocal to self when loading associated records.
Private Instance Methods
Source
# File lib/sequel/model/associations.rb 1122 def apply_filter_by_associations_limit_strategy(ds) 1123 case filter_by_associations_limit_strategy 1124 when :correlated_subquery 1125 apply_correlated_subquery_limit_strategy(ds) 1126 else 1127 super 1128 end 1129 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 1131 def filter_by_associations_conditions_associated_keys 1132 qualify(associated_class.table_name, self[:keys]) 1133 end
Source
# File lib/sequel/model/associations.rb 1135 def filter_by_associations_conditions_key 1136 qualify(self[:model].table_name, self[:primary_key_column]) 1137 end
Source
# File lib/sequel/model/associations.rb 1139 def filter_by_associations_limit_alias_key 1140 Array(filter_by_associations_limit_key) 1141 end
Source
# File lib/sequel/model/associations.rb 1143 def filter_by_associations_limit_aliases 1144 filter_by_associations_limit_alias_key.map(&:column) 1145 end
Source
# File lib/sequel/model/associations.rb 1147 def filter_by_associations_limit_key 1148 qualify(associated_class.table_name, associated_class.primary_key) 1149 end
Source
# File lib/sequel/model/associations.rb 1151 def predicate_key_methods 1152 self[:primary_keys] 1153 end
Source
# File lib/sequel/model/associations.rb 1155 def reciprocal_association?(assoc_reflect) 1156 super && self[:keys] == assoc_reflect[:keys] && primary_key == assoc_reflect.primary_key 1157 end
Sequel::Model::Associations::AssociationReflection#reciprocal_association?
Source
# File lib/sequel/model/associations.rb 1160 def reciprocal_type 1161 :many_to_one 1162 end
The reciprocal type of a one_to_many association is a many_to_one association.
Source
# File lib/sequel/model/associations.rb 1167 def true_eager_graph_limit_strategy 1168 r = super 1169 ds = associated_dataset 1170 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?) 1171 :correlated_subquery 1172 else 1173 r 1174 end 1175 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