# File lib/sequel/model/associations.rb 898 def primary_key 899 cached_fetch(:primary_key){associated_class.primary_key || raise(Error, "no primary key specified for #{associated_class.inspect}")} 900 end
class Sequel::Model::Associations::ManyToOneAssociationReflection
Constants
- FINALIZE_SETTINGS
Public Instance Methods
Source
# File lib/sequel/model/associations.rb 844 def can_have_associated_objects?(obj) 845 !self[:keys].any?{|k| obj.get_column_value(k).nil?} 846 end
many_to_one associations can only have associated objects if none of the :keys options have a nil value.
Source
# File lib/sequel/model/associations.rb 849 def dataset_need_primary_key? 850 false 851 end
Whether the dataset needs a primary key to function, false for many_to_one associations.
Source
# File lib/sequel/model/associations.rb 855 def default_key 856 :"#{self[:name]}_id" 857 end
Default foreign key name symbol for foreign key in current model’s table that points to the given association’s table’s primary key.
Source
# File lib/sequel/model/associations.rb 861 def eager_graph_lazy_dataset? 862 self[:key].nil? 863 end
Whether to eagerly graph a lazy dataset, true for many_to_one associations only if the key is nil.
Source
# File lib/sequel/model/associations.rb 866 def eager_graph_limit_strategy(_) 867 nil 868 end
many_to_one associations don’t need an eager_graph limit strategy
Source
# File lib/sequel/model/associations.rb 871 def eager_limit_strategy 872 nil 873 end
many_to_one associations don’t need an eager limit strategy
Source
# File lib/sequel/model/associations.rb 876 def filter_by_associations_limit_strategy 877 nil 878 end
many_to_one associations don’t need a filter by associations limit strategy
Source
# File lib/sequel/model/associations.rb 888 def finalize_settings 889 FINALIZE_SETTINGS 890 end
Source
# File lib/sequel/model/associations.rb 893 def predicate_key 894 cached_fetch(:predicate_key){qualified_primary_key} 895 end
The expression to use on the left hand side of the IN lookup when eager loading
Source
The column(s) in the associated table that the key in the current table references (either a symbol or an array).
Source
# File lib/sequel/model/associations.rb 910 def primary_key_method 911 cached_fetch(:primary_key_method){primary_key} 912 end
The method symbol or array of method symbols to call on the associated object to get the value to use for the foreign keys.
Source
# File lib/sequel/model/associations.rb 916 def primary_key_methods 917 cached_fetch(:primary_key_methods){Array(primary_key_method)} 918 end
The array of method symbols to call on the associated object to get the value to use for the foreign keys.
Source
# File lib/sequel/model/associations.rb 903 def primary_keys 904 cached_fetch(:primary_keys){Array(primary_key)} 905 end
The columns in the associated table that the key in the current table references (always an array).
Source
# File lib/sequel/model/associations.rb 921 def qualified_primary_key 922 cached_fetch(:qualified_primary_key){self[:qualify] == false ? primary_key : qualify_assoc(primary_key)} 923 end
primary_key
qualified by the associated table
Source
# File lib/sequel/model/associations.rb 926 def reciprocal_array? 927 !set_reciprocal_to_self? 928 end
True only if the reciprocal is a one_to_many association.
Source
# File lib/sequel/model/associations.rb 932 def returns_array? 933 false 934 end
Whether this association returns an array of objects instead of a single object, false for a many_to_one association.
Source
# File lib/sequel/model/associations.rb 937 def set_reciprocal_to_self? 938 reciprocal 939 reciprocal_type == :one_to_one 940 end
True only if the reciprocal is a one_to_one association.
Private Instance Methods
Source
# File lib/sequel/model/associations.rb 946 def ambiguous_reciprocal_type? 947 true 948 end
Reciprocals of many_to_one associations could be either one_to_many or one_to_one, and which is not known in advance.
Source
# File lib/sequel/model/associations.rb 950 def filter_by_associations_conditions_associated_keys 951 qualify(associated_class.table_name, primary_keys) 952 end
Source
# File lib/sequel/model/associations.rb 954 def filter_by_associations_conditions_key 955 qualify(self[:model].table_name, self[:key_column]) 956 end
Source
# File lib/sequel/model/associations.rb 960 def limit_to_single_row? 961 super && self[:key] 962 end
many_to_one associations do not need to be limited to a single row if they explicitly do not have a key.
Sequel::Model::Associations::AssociationReflection#limit_to_single_row?
Source
# File lib/sequel/model/associations.rb 970 def possible_reciprocal_types 971 [:one_to_many, :one_to_one] 972 end
The reciprocal type of a many_to_one association is either a one_to_many or a one_to_one association.
Source
# File lib/sequel/model/associations.rb 964 def predicate_key_methods 965 self[:keys] 966 end
Source
# File lib/sequel/model/associations.rb 975 def reciprocal_association?(assoc_reflect) 976 super && self[:keys] == assoc_reflect[:keys] && primary_key == assoc_reflect.primary_key 977 end
Whether the given association reflection is possible reciprocal
Sequel::Model::Associations::AssociationReflection#reciprocal_association?
Source
# File lib/sequel/model/associations.rb 982 def reciprocal_type 983 cached_fetch(:reciprocal_type) do 984 possible_recips = [] 985 986 associated_class.all_association_reflections.each do |assoc_reflect| 987 if reciprocal_association?(assoc_reflect) 988 possible_recips << assoc_reflect 989 end 990 end 991 992 if possible_recips.length == 1 993 possible_recips.first[:type] 994 else 995 possible_reciprocal_types 996 end 997 end 998 end
The reciprocal type of a many_to_one association is either a one_to_many or a one_to_one association, look in the associated class to try to figure out which.