# File lib/sequel/model/associations.rb 915 def primary_key 916 cached_fetch(:primary_key){associated_class.primary_key || raise(Error, "no primary key specified for #{associated_class.inspect}")} 917 end
class Sequel::Model::Associations::ManyToOneAssociationReflection
Constants
- FINALIZE_SETTINGS
Public Instance Methods
Source
# File lib/sequel/model/associations.rb 861 def can_have_associated_objects?(obj) 862 !self[:keys].any?{|k| obj.get_column_value(k).nil?} 863 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 866 def dataset_need_primary_key? 867 false 868 end
Whether the dataset needs a primary key to function, false for many_to_one associations.
Source
# File lib/sequel/model/associations.rb 872 def default_key 873 :"#{self[:name]}_id" 874 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 878 def eager_graph_lazy_dataset? 879 self[:key].nil? 880 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 883 def eager_graph_limit_strategy(_) 884 nil 885 end
many_to_one associations don’t need an eager_graph limit strategy
Source
# File lib/sequel/model/associations.rb 888 def eager_limit_strategy 889 nil 890 end
many_to_one associations don’t need an eager limit strategy
Source
# File lib/sequel/model/associations.rb 893 def filter_by_associations_limit_strategy 894 nil 895 end
many_to_one associations don’t need a filter by associations limit strategy
Source
# File lib/sequel/model/associations.rb 905 def finalize_settings 906 FINALIZE_SETTINGS 907 end
Source
# File lib/sequel/model/associations.rb 910 def predicate_key 911 cached_fetch(:predicate_key){qualified_primary_key} 912 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 927 def primary_key_method 928 cached_fetch(:primary_key_method){primary_key} 929 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 933 def primary_key_methods 934 cached_fetch(:primary_key_methods){Array(primary_key_method)} 935 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 920 def primary_keys 921 cached_fetch(:primary_keys){Array(primary_key)} 922 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 938 def qualified_primary_key 939 cached_fetch(:qualified_primary_key){self[:qualify] == false ? primary_key : qualify_assoc(primary_key)} 940 end
primary_key
qualified by the associated table
Source
# File lib/sequel/model/associations.rb 943 def reciprocal_array? 944 !set_reciprocal_to_self? 945 end
True only if the reciprocal is a one_to_many association.
Source
# File lib/sequel/model/associations.rb 949 def returns_array? 950 false 951 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 954 def set_reciprocal_to_self? 955 reciprocal 956 reciprocal_type == :one_to_one 957 end
True only if the reciprocal is a one_to_one association.
Private Instance Methods
Source
# File lib/sequel/model/associations.rb 963 def ambiguous_reciprocal_type? 964 true 965 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 967 def filter_by_associations_conditions_associated_keys 968 qualify(associated_class.table_name, primary_keys) 969 end
Source
# File lib/sequel/model/associations.rb 971 def filter_by_associations_conditions_key 972 qualify(self[:model].table_name, self[:key_column]) 973 end
Source
# File lib/sequel/model/associations.rb 977 def limit_to_single_row? 978 super && self[:key] 979 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 987 def possible_reciprocal_types 988 [:one_to_many, :one_to_one] 989 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 981 def predicate_key_methods 982 self[:keys] 983 end
Source
# File lib/sequel/model/associations.rb 992 def reciprocal_association?(assoc_reflect) 993 super && self[:keys] == assoc_reflect[:keys] && primary_key == assoc_reflect.primary_key 994 end
Whether the given association reflection is possible reciprocal
Sequel::Model::Associations::AssociationReflection#reciprocal_association?
Source
# File lib/sequel/model/associations.rb 999 def reciprocal_type 1000 cached_fetch(:reciprocal_type) do 1001 possible_recips = [] 1002 1003 associated_class.all_association_reflections.each do |assoc_reflect| 1004 if reciprocal_association?(assoc_reflect) 1005 possible_recips << assoc_reflect 1006 end 1007 end 1008 1009 if possible_recips.length == 1 1010 possible_recips.first[:type] 1011 else 1012 possible_reciprocal_types 1013 end 1014 end 1015 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.