Class | Sequel::Model::Associations::AssociationReflection |
In: |
lib/sequel_model/association_reflection.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 add internal association method
# File lib/sequel_model/association_reflection.rb, line 10 10: def _add_method 11: 12: "_add_#{self[:name].to_s.singularize}" 13: end
Name symbol for _dataset association method
# File lib/sequel_model/association_reflection.rb, line 15 15: def _dataset_method 16: 17: "_#{self[:name]}_dataset" 18: end
Name symbol for _remove_all internal association method
# File lib/sequel_model/association_reflection.rb, line 20 20: def _remove_all_method 21: 22: "_remove_all_#{self[:name]}" 23: end
Name symbol for remove internal association method
# File lib/sequel_model/association_reflection.rb, line 25 25: def _remove_method 26: 27: "_remove_#{self[:name].to_s.singularize}" 28: end
Name symbol for setter association method
# File lib/sequel_model/association_reflection.rb, line 30 30: def _setter_method 31: 32: "_#{self[:name]}=" 33: end
Name symbol for add_ association method
# File lib/sequel_model/association_reflection.rb, line 35 35: def add_method 36: 37: "add_#{self[:name].to_s.singularize}" 38: end
The class associated to the current model class via this association
# File lib/sequel_model/association_reflection.rb, line 45 45: def associated_class 46: self[:class] ||= self[:class_name].constantize 47: end
Name symbol for association method, the same as the name of the association.
# File lib/sequel_model/association_reflection.rb, line 40 40: def association_method 41: self[:name] 42: end
Name symbol for _helper internal association method
# File lib/sequel_model/association_reflection.rb, line 55 55: def dataset_helper_method 56: 57: "_#{self[:name]}_dataset_helper" 58: end
Name symbol for dataset association method
# File lib/sequel_model/association_reflection.rb, line 50 50: def dataset_method 51: 52: "#{self[:name]}_dataset" 53: end
Whether the dataset needs a primary key to function, true by default.
# File lib/sequel_model/association_reflection.rb, line 60 60: def dataset_need_primary_key? 61: true 62: end
Whether to eagerly graph a lazy dataset, true by default.
# File lib/sequel_model/association_reflection.rb, line 65 65: def eager_graph_lazy_dataset? 66: true 67: end
Whether the associated object needs a primary key to be added/removed, false by default.
# File lib/sequel_model/association_reflection.rb, line 71 71: def need_associated_primary_key? 72: false 73: end
Returns/sets the reciprocal association variable, if one exists
# File lib/sequel_model/association_reflection.rb, line 76 76: def reciprocal 77: return self[:reciprocal] if include?(:reciprocal) 78: r_type = reciprocal_type 79: key = self[:key] 80: associated_class.all_association_reflections.each do |assoc_reflect| 81: if assoc_reflect[:type] == r_type && assoc_reflect[:key] == key 82: return self[:reciprocal] = assoc_reflect[:name] 83: end 84: end 85: self[:reciprocal] = nil 86: end
Whether the reciprocal of this association returns an array of objects instead of a single object, true by default.
# File lib/sequel_model/association_reflection.rb, line 90 90: def reciprocal_array? 91: true 92: end
Name symbol for remove_all_ association method
# File lib/sequel_model/association_reflection.rb, line 95 95: def remove_all_method 96: 97: "remove_all_#{self[:name]}" 98: end
Name symbol for remove_ association method
# File lib/sequel_model/association_reflection.rb, line 100 100: def remove_method 101: 102: "remove_#{self[:name].to_s.singularize}" 103: end
Whether this association returns an array of objects instead of a single object, true by default.
# File lib/sequel_model/association_reflection.rb, line 106 106: def returns_array? 107: true 108: end
By default, associations shouldn‘t set the reciprocal association to self.
# File lib/sequel_model/association_reflection.rb, line 116 116: def set_reciprocal_to_self? 117: false 118: end