# File lib/sequel/model/associations.rb 1055 def primary_key 1056 self[:primary_key] 1057 end
class Sequel::Model::Associations::OneToManyAssociationReflection
Constants
- FINALIZE_SETTINGS
Public Instance Methods
Source
# File lib/sequel/model/associations.rb 1005 def apply_eager_graph_limit_strategy(strategy, ds) 1006 case strategy 1007 when :correlated_subquery 1008 apply_correlated_subquery_limit_strategy(ds) 1009 else 1010 super 1011 end 1012 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 1015 def associated_object_keys 1016 self[:keys] 1017 end
The keys in the associated model’s table related to this association
Source
# File lib/sequel/model/associations.rb 1021 def can_have_associated_objects?(obj) 1022 !self[:primary_keys].any?{|k| obj.get_column_value(k).nil?} 1023 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 1026 def cloneable?(ref) 1027 ref[:type] == :one_to_many || ref[:type] == :one_to_one 1028 end
one_to_many and one_to_one associations can be clones
Source
# File lib/sequel/model/associations.rb 1032 def default_key 1033 :"#{underscore(demodulize(self[:model].name))}_id" 1034 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 1039 def finalize_settings 1040 FINALIZE_SETTINGS 1041 end
Source
# File lib/sequel/model/associations.rb 1044 def handle_silent_modification_failure? 1045 self[:raise_on_save_failure] == false 1046 end
Handle silent failure of add/remove methods if raise_on_save_failure is false.
Source
# File lib/sequel/model/associations.rb 1049 def predicate_key 1050 cached_fetch(:predicate_key){qualify_assoc(self[:key])} 1051 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 1060 def qualified_primary_key 1061 cached_fetch(:qualified_primary_key){qualify_cur(primary_key)} 1062 end
primary_key
qualified by the current table
Source
# File lib/sequel/model/associations.rb 1066 def reciprocal_array? 1067 false 1068 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 1071 def remove_before_destroy? 1072 false 1073 end
Destroying one_to_many associated objects automatically deletes the foreign key.
Source
# File lib/sequel/model/associations.rb 1076 def remove_should_check_existing? 1077 true 1078 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 1081 def set_reciprocal_to_self? 1082 true 1083 end
One to many associations set the reciprocal to self when loading associated records.
Private Instance Methods
Source
# File lib/sequel/model/associations.rb 1105 def apply_filter_by_associations_limit_strategy(ds) 1106 case filter_by_associations_limit_strategy 1107 when :correlated_subquery 1108 apply_correlated_subquery_limit_strategy(ds) 1109 else 1110 super 1111 end 1112 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 1114 def filter_by_associations_conditions_associated_keys 1115 qualify(associated_class.table_name, self[:keys]) 1116 end
Source
# File lib/sequel/model/associations.rb 1118 def filter_by_associations_conditions_key 1119 qualify(self[:model].table_name, self[:primary_key_column]) 1120 end
Source
# File lib/sequel/model/associations.rb 1122 def filter_by_associations_limit_alias_key 1123 Array(filter_by_associations_limit_key) 1124 end
Source
# File lib/sequel/model/associations.rb 1126 def filter_by_associations_limit_aliases 1127 filter_by_associations_limit_alias_key.map(&:column) 1128 end
Source
# File lib/sequel/model/associations.rb 1130 def filter_by_associations_limit_key 1131 qualify(associated_class.table_name, associated_class.primary_key) 1132 end
Source
# File lib/sequel/model/associations.rb 1134 def predicate_key_methods 1135 self[:primary_keys] 1136 end
Source
# File lib/sequel/model/associations.rb 1138 def reciprocal_association?(assoc_reflect) 1139 super && self[:keys] == assoc_reflect[:keys] && primary_key == assoc_reflect.primary_key 1140 end
Sequel::Model::Associations::AssociationReflection#reciprocal_association?
Source
# File lib/sequel/model/associations.rb 1143 def reciprocal_type 1144 :many_to_one 1145 end
The reciprocal type of a one_to_many association is a many_to_one association.
Source
# File lib/sequel/model/associations.rb 1150 def true_eager_graph_limit_strategy 1151 r = super 1152 ds = associated_dataset 1153 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?) 1154 :correlated_subquery 1155 else 1156 r 1157 end 1158 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