Class: Sequel::Model::Associations::AssociationReflection
- Includes:
- Inflections
- Defined in:
- lib/sequel/model/associations.rb
Overview
AssociationReflection is a Hash subclass that keeps information on Sequel::Model associations. It provides methods to reduce internal code duplication. It should not be instantiated by the user.
Direct Known Subclasses
ManyToManyAssociationReflection, ManyToOneAssociationReflection, OneToManyAssociationReflection
Constant Summary
Constants included from Inflections
Inflections::CAMELIZE_CONVERT_REGEXP, Inflections::CAMELIZE_MODULE_REGEXP, Inflections::DASH, Inflections::DEMODULIZE_CONVERT_REGEXP, Inflections::EMPTY_STRING, Inflections::SLASH, Inflections::UNDERSCORE, Inflections::UNDERSCORE_CONVERT_REGEXP1, Inflections::UNDERSCORE_CONVERT_REGEXP2, Inflections::UNDERSCORE_CONVERT_REPLACE, Inflections::UNDERSCORE_MODULE_REGEXP, Inflections::VALID_CONSTANT_NAME_REGEXP
Instance Method Summary collapse
-
#_add_method ⇒ Object
Name symbol for the _add internal association method.
-
#_dataset_method ⇒ Object
Name symbol for the _dataset association method.
-
#_remove_all_method ⇒ Object
Name symbol for the _remove_all internal association method.
-
#_remove_method ⇒ Object
Name symbol for the _remove internal association method.
-
#_setter_method ⇒ Object
Name symbol for the _setter association method.
-
#add_method ⇒ Object
Name symbol for the add association method.
-
#associated_class ⇒ Object
The class associated to the current model class via this association.
-
#association_method ⇒ Object
Name symbol for association method, the same as the name of the association.
-
#dataset_helper_method ⇒ Object
Name symbol for the _helper internal association method.
-
#dataset_method ⇒ Object
Name symbol for the dataset association method.
-
#dataset_need_primary_key? ⇒ Boolean
Whether the dataset needs a primary key to function, true by default.
-
#eager_graph_lazy_dataset? ⇒ Boolean
Whether to eagerly graph a lazy dataset, true by default.
-
#eager_loading_use_associated_key? ⇒ Boolean
By default associations do not need to select a key in an associated table to eagerly load.
-
#need_associated_primary_key? ⇒ Boolean
Whether the associated object needs a primary key to be added/removed, false by default.
-
#reciprocal ⇒ Object
Returns the reciprocal association variable, if one exists.
-
#reciprocal_array? ⇒ Boolean
Whether the reciprocal of this association returns an array of objects instead of a single object, true by default.
-
#remove_all_method ⇒ Object
Name symbol for the remove_all_ association method.
-
#remove_method ⇒ Object
Name symbol for the remove_ association method.
-
#returns_array? ⇒ Boolean
Whether this association returns an array of objects instead of a single object, true by default.
-
#select ⇒ Object
The columns to select when loading the association, nil by default.
-
#set_reciprocal_to_self? ⇒ Boolean
Whether to set the reciprocal association to self when loading associated records, false by default.
-
#setter_method ⇒ Object
Name symbol for the setter association method.
Methods included from Inflections
clear, irregular, plural, singular, uncountable
Methods inherited from Hash
#&, #case, #sql_expr, #sql_negate, #sql_or, #|, #~
Instance Method Details
#_add_method ⇒ Object
Name symbol for the _add internal association method
21 22 23 |
# File 'lib/sequel/model/associations.rb', line 21 def _add_method :"_add_#{singularize(self[:name])}" end |
#_dataset_method ⇒ Object
Name symbol for the _dataset association method
26 27 28 |
# File 'lib/sequel/model/associations.rb', line 26 def _dataset_method :"_#{self[:name]}_dataset" end |
#_remove_all_method ⇒ Object
Name symbol for the _remove_all internal association method
31 32 33 |
# File 'lib/sequel/model/associations.rb', line 31 def _remove_all_method :"_remove_all_#{self[:name]}" end |
#_remove_method ⇒ Object
Name symbol for the _remove internal association method
36 37 38 |
# File 'lib/sequel/model/associations.rb', line 36 def _remove_method :"_remove_#{singularize(self[:name])}" end |
#_setter_method ⇒ Object
Name symbol for the _setter association method
41 42 43 |
# File 'lib/sequel/model/associations.rb', line 41 def _setter_method :"_#{self[:name]}=" end |
#add_method ⇒ Object
Name symbol for the add association method
46 47 48 |
# File 'lib/sequel/model/associations.rb', line 46 def add_method :"add_#{singularize(self[:name])}" end |
#associated_class ⇒ Object
The class associated to the current model class via this association
56 57 58 |
# File 'lib/sequel/model/associations.rb', line 56 def associated_class self[:class] ||= constantize(self[:class_name]) end |
#association_method ⇒ Object
Name symbol for association method, the same as the name of the association.
51 52 53 |
# File 'lib/sequel/model/associations.rb', line 51 def association_method self[:name] end |
#dataset_helper_method ⇒ Object
Name symbol for the _helper internal association method
67 68 69 |
# File 'lib/sequel/model/associations.rb', line 67 def dataset_helper_method :"_#{self[:name]}_dataset_helper" end |
#dataset_method ⇒ Object
Name symbol for the dataset association method
62 63 64 |
# File 'lib/sequel/model/associations.rb', line 62 def dataset_method :"#{self[:name]}_dataset" end |
#dataset_need_primary_key? ⇒ Boolean
Whether the dataset needs a primary key to function, true by default.
72 73 74 |
# File 'lib/sequel/model/associations.rb', line 72 def dataset_need_primary_key? true end |
#eager_graph_lazy_dataset? ⇒ Boolean
Whether to eagerly graph a lazy dataset, true by default. If this is false, the association won’t respect the :eager_graph option when loading the association for a single record.
85 86 87 |
# File 'lib/sequel/model/associations.rb', line 85 def eager_graph_lazy_dataset? true end |
#eager_loading_use_associated_key? ⇒ Boolean
By default associations do not need to select a key in an associated table to eagerly load.
78 79 80 |
# File 'lib/sequel/model/associations.rb', line 78 def eager_loading_use_associated_key? false end |
#need_associated_primary_key? ⇒ Boolean
Whether the associated object needs a primary key to be added/removed, false by default.
91 92 93 |
# File 'lib/sequel/model/associations.rb', line 91 def need_associated_primary_key? false end |
#reciprocal ⇒ Object
Returns the reciprocal association variable, if one exists. The reciprocal association is the association in the associated class that is the opposite of the current association. For example, Album.many_to_one :artist and Artist.one_to_many :albums are reciprocal associations. This information is to populate reciprocal associations. For example, when you do this_artist.add_album(album) it sets album.artist to this_artist.
101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/sequel/model/associations.rb', line 101 def reciprocal return self[:reciprocal] if include?(:reciprocal) r_type = reciprocal_type key = self[:key] associated_class.all_association_reflections.each do |assoc_reflect| if assoc_reflect[:type] == r_type && assoc_reflect[:key] == key && assoc_reflect.associated_class == self[:model] return self[:reciprocal] = assoc_reflect[:name] end end self[:reciprocal] = nil end |
#reciprocal_array? ⇒ Boolean
Whether the reciprocal of this association returns an array of objects instead of a single object, true by default.
115 116 117 |
# File 'lib/sequel/model/associations.rb', line 115 def reciprocal_array? true end |
#remove_all_method ⇒ Object
Name symbol for the remove_all_ association method
120 121 122 |
# File 'lib/sequel/model/associations.rb', line 120 def remove_all_method :"remove_all_#{self[:name]}" end |
#remove_method ⇒ Object
Name symbol for the remove_ association method
125 126 127 |
# File 'lib/sequel/model/associations.rb', line 125 def remove_method :"remove_#{singularize(self[:name])}" end |
#returns_array? ⇒ Boolean
Whether this association returns an array of objects instead of a single object, true by default.
131 132 133 |
# File 'lib/sequel/model/associations.rb', line 131 def returns_array? true end |
#select ⇒ Object
The columns to select when loading the association, nil by default.
136 137 138 |
# File 'lib/sequel/model/associations.rb', line 136 def select self[:select] end |
#set_reciprocal_to_self? ⇒ Boolean
Whether to set the reciprocal association to self when loading associated records, false by default.
142 143 144 |
# File 'lib/sequel/model/associations.rb', line 142 def set_reciprocal_to_self? false end |
#setter_method ⇒ Object
Name symbol for the setter association method
147 148 149 |
# File 'lib/sequel/model/associations.rb', line 147 def setter_method :"#{self[:name]}=" end |