| Class | Sequel::Model::Associations::AssociationReflection |
| In: |
lib/sequel/model/associations.rb
|
| Parent: | Hash |
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.
Name symbol for the _add internal association method
# File lib/sequel/model/associations.rb, line 21
21: def _add_method
22:
23: "_add_#{singularize(self[:name])}"
24: end
Name symbol for the _dataset association method
# File lib/sequel/model/associations.rb, line 26
26: def _dataset_method
27:
28: "_#{self[:name]}_dataset"
29: end
Name symbol for the _remove_all internal association method
# File lib/sequel/model/associations.rb, line 31
31: def _remove_all_method
32:
33: "_remove_all_#{self[:name]}"
34: end
Name symbol for the _remove internal association method
# File lib/sequel/model/associations.rb, line 36
36: def _remove_method
37:
38: "_remove_#{singularize(self[:name])}"
39: end
Name symbol for the _setter association method
# File lib/sequel/model/associations.rb, line 41
41: def _setter_method
42:
43: "_#{self[:name]}="
44: end
Name symbol for the add association method
# File lib/sequel/model/associations.rb, line 46
46: def add_method
47:
48: "add_#{singularize(self[:name])}"
49: end
The class associated to the current model class via this association
# File lib/sequel/model/associations.rb, line 56
56: def associated_class
57: self[:class] ||= constantize(self[:class_name])
58: end
Name symbol for association method, the same as the name of the association.
# File lib/sequel/model/associations.rb, line 51
51: def association_method
52: self[:name]
53: end
Name symbol for the _helper internal association method
# File lib/sequel/model/associations.rb, line 66
66: def dataset_helper_method
67:
68: "_#{self[:name]}_dataset_helper"
69: end
Name symbol for the dataset association method
# File lib/sequel/model/associations.rb, line 61
61: def dataset_method
62:
63: "#{self[:name]}_dataset"
64: end
Whether the dataset needs a primary key to function, true by default.
# File lib/sequel/model/associations.rb, line 71
71: def dataset_need_primary_key?
72: true
73: end
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.
# File lib/sequel/model/associations.rb, line 78
78: def eager_graph_lazy_dataset?
79: true
80: end
Whether the associated object needs a primary key to be added/removed, false by default.
# File lib/sequel/model/associations.rb, line 84
84: def need_associated_primary_key?
85: false
86: end
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.
# File lib/sequel/model/associations.rb, line 94
94: def reciprocal
95: return self[:reciprocal] if include?(:reciprocal)
96: r_type = reciprocal_type
97: key = self[:key]
98: associated_class.all_association_reflections.each do |assoc_reflect|
99: if assoc_reflect[:type] == r_type && assoc_reflect[:key] == key
100: return self[:reciprocal] = assoc_reflect[:name]
101: end
102: end
103: self[:reciprocal] = nil
104: end
Whether the reciprocal of this association returns an array of objects instead of a single object, true by default.
# File lib/sequel/model/associations.rb, line 108
108: def reciprocal_array?
109: true
110: end
Name symbol for the remove_all_ association method
# File lib/sequel/model/associations.rb, line 113
113: def remove_all_method
114:
115: "remove_all_#{self[:name]}"
116: end
Name symbol for the remove_ association method
# File lib/sequel/model/associations.rb, line 118
118: def remove_method
119:
120: "remove_#{singularize(self[:name])}"
121: end
Whether this association returns an array of objects instead of a single object, true by default.
# File lib/sequel/model/associations.rb, line 124
124: def returns_array?
125: true
126: end
Whether to set the reciprocal association to self when loading associated records, false by default.
# File lib/sequel/model/associations.rb, line 135
135: def set_reciprocal_to_self?
136: false
137: end