Module: NPR::Concern::Relation::ClassMethods
- Defined in:
- lib/npr/concern/relation.rb
Overview
Instance Attribute Summary collapse
- 
  
    
      #_has_many_relations  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    —————–. 
- #_has_one_relations ⇒ Object readonly
Instance Method Summary collapse
- 
  
    
      #has_many(name, options)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    —————– Define a relationship Similar to ActiveRecord’s has_many.
- 
  
    
      #has_one(name, options)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    —————–. 
Instance Attribute Details
#_has_many_relations ⇒ Object
| 53 54 55 | # File 'lib/npr/concern/relation.rb', line 53 def _has_many_relations @_has_many_relations ||= [] end | 
#_has_one_relations ⇒ Object
| 57 58 59 | # File 'lib/npr/concern/relation.rb', line 57 def _has_one_relations @_has_one_relations ||= [] end | 
Instance Method Details
#has_many(name, options) ⇒ Object
Define a relationship Similar to ActiveRecord’s has_many
Arguments:
- 
name (String) - the name of the relation 
- 
options (Hash) * class_name (Class) - the class for the related objects * key (String) - the JSON key that holds this relation
Example:
has_many "links", key: "link", class_name: NPR::Entity::Link
| 29 30 31 32 33 34 35 36 37 38 39 40 41 | # File 'lib/npr/concern/relation.rb', line 29 def has_many(name, ) relation = build_relation(name, ) # Define getter and setter for this attribute # Forces the relation into an empty array when # it's first accessed. attr_writer name define_method name do instance_variable_get("@#{name}") || instance_variable_set("@#{name}", []) end _has_many_relations.push relation end | 
#has_one(name, options) ⇒ Object
| 45 46 47 48 49 | # File 'lib/npr/concern/relation.rb', line 45 def has_one(name, ) relation = build_relation(name, ) attr_accessor name _has_one_relations.push relation end |