# File lib/sequel/model/associations.rb 909 def primary_key 910 cached_fetch(:primary_key){associated_class.primary_key || raise(Error, "no primary key specified for #{associated_class.inspect}")} 911 end
class Sequel::Model::Associations::ManyToOneAssociationReflection
Constants
- FINALIZE_SETTINGS
Public Instance Methods
Source
# File lib/sequel/model/associations.rb 855 def can_have_associated_objects?(obj) 856 !self[:keys].any?{|k| obj.get_column_value(k).nil?} 857 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 860 def dataset_need_primary_key? 861 false 862 end
Whether the dataset needs a primary key to function, false for many_to_one associations.
Source
# File lib/sequel/model/associations.rb 866 def default_key 867 :"#{self[:name]}_id" 868 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 872 def eager_graph_lazy_dataset? 873 self[:key].nil? 874 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 877 def eager_graph_limit_strategy(_) 878 nil 879 end
many_to_one associations don’t need an eager_graph limit strategy
Source
# File lib/sequel/model/associations.rb 882 def eager_limit_strategy 883 nil 884 end
many_to_one associations don’t need an eager limit strategy
Source
# File lib/sequel/model/associations.rb 887 def filter_by_associations_limit_strategy 888 nil 889 end
many_to_one associations don’t need a filter by associations limit strategy
Source
# File lib/sequel/model/associations.rb 899 def finalize_settings 900 FINALIZE_SETTINGS 901 end
Source
# File lib/sequel/model/associations.rb 904 def predicate_key 905 cached_fetch(:predicate_key){qualified_primary_key} 906 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 921 def primary_key_method 922 cached_fetch(:primary_key_method){primary_key} 923 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 927 def primary_key_methods 928 cached_fetch(:primary_key_methods){Array(primary_key_method)} 929 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 914 def primary_keys 915 cached_fetch(:primary_keys){Array(primary_key)} 916 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 932 def qualified_primary_key 933 cached_fetch(:qualified_primary_key){self[:qualify] == false ? primary_key : qualify_assoc(primary_key)} 934 end
primary_key
qualified by the associated table
Source
# File lib/sequel/model/associations.rb 937 def reciprocal_array? 938 !set_reciprocal_to_self? 939 end
True only if the reciprocal is a one_to_many association.
Source
# File lib/sequel/model/associations.rb 943 def returns_array? 944 false 945 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 948 def set_reciprocal_to_self? 949 reciprocal 950 reciprocal_type == :one_to_one 951 end
True only if the reciprocal is a one_to_one association.
Private Instance Methods
Source
# File lib/sequel/model/associations.rb 957 def ambiguous_reciprocal_type? 958 true 959 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 961 def filter_by_associations_conditions_associated_keys 962 qualify(associated_class.table_name, primary_keys) 963 end
Source
# File lib/sequel/model/associations.rb 965 def filter_by_associations_conditions_key 966 qualify(self[:model].table_name, self[:key_column]) 967 end
Source
# File lib/sequel/model/associations.rb 971 def limit_to_single_row? 972 super && self[:key] 973 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 981 def possible_reciprocal_types 982 [:one_to_many, :one_to_one] 983 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 975 def predicate_key_methods 976 self[:keys] 977 end
Source
# File lib/sequel/model/associations.rb 986 def reciprocal_association?(assoc_reflect) 987 super && self[:keys] == assoc_reflect[:keys] && primary_key == assoc_reflect.primary_key 988 end
Whether the given association reflection is possible reciprocal
Sequel::Model::Associations::AssociationReflection#reciprocal_association?
Source
# File lib/sequel/model/associations.rb 993 def reciprocal_type 994 cached_fetch(:reciprocal_type) do 995 possible_recips = [] 996 997 associated_class.all_association_reflections.each do |assoc_reflect| 998 if reciprocal_association?(assoc_reflect) 999 possible_recips << assoc_reflect 1000 end 1001 end 1002 1003 if possible_recips.length == 1 1004 possible_recips.first[:type] 1005 else 1006 possible_reciprocal_types 1007 end 1008 end 1009 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.