Module: Sequel::Model::Associations::SingularAssociationReflection
- Included in:
- OneThroughOneAssociationReflection, OneToOneAssociationReflection, Plugins::ManyThroughMany::OneThroughManyAssociationReflection
- Defined in:
- lib/sequel/model/associations.rb
Overview
Methods that turn an association that returns multiple objects into an association that returns a single object.
Instance Method Summary collapse
- 
  
    
      #assign_singular?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    Singular associations do not assign singular if they are using the ruby eager limit strategy and have a slice range, since they need to store the array of associated objects in order to pick the correct one with an offset. 
- 
  
    
      #filter_by_associations_add_conditions?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    Add conditions when filtering by singular associations with orders, since the underlying relationship is probably not one-to-one. 
- 
  
    
      #limit_and_offset  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Make sure singular associations always have 1 as the limit. 
- 
  
    
      #returns_array?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    Singular associations always return a single object, not an array. 
Instance Method Details
#assign_singular? ⇒ Boolean
Singular associations do not assign singular if they are using the ruby eager limit strategy and have a slice range, since they need to store the array of associated objects in order to pick the correct one with an offset.
| 1184 1185 1186 | # File 'lib/sequel/model/associations.rb', line 1184 def assign_singular? super && (eager_limit_strategy != :ruby || !slice_range) end | 
#filter_by_associations_add_conditions? ⇒ Boolean
Add conditions when filtering by singular associations with orders, since the underlying relationship is probably not one-to-one.
| 1190 1191 1192 | # File 'lib/sequel/model/associations.rb', line 1190 def filter_by_associations_add_conditions? super || self[:order] || self[:eager_limit_strategy] || self[:filter_limit_strategy] end | 
#limit_and_offset ⇒ Object
Make sure singular associations always have 1 as the limit
| 1195 1196 1197 1198 1199 1200 1201 1202 | # File 'lib/sequel/model/associations.rb', line 1195 def limit_and_offset r = super if r.first == 1 r else [1, r[1]] end end | 
#returns_array? ⇒ Boolean
Singular associations always return a single object, not an array.
| 1205 1206 1207 | # File 'lib/sequel/model/associations.rb', line 1205 def returns_array? false end |