<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
  Module: JsonapiCompliable::Adapters::ActiveRecordSideloading
  
    &mdash; Documentation by YARD 0.9.9
  
</title>

  <link rel="stylesheet" href="../../css/style.css" type="text/css" charset="utf-8" />

  <link rel="stylesheet" href="../../css/common.css" type="text/css" charset="utf-8" />

<script type="text/javascript" charset="utf-8">
  pathId = "JsonapiCompliable::Adapters::ActiveRecordSideloading";
  relpath = '../../';
</script>


  <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>

  <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>


  </head>
  <body>
    <div class="nav_wrap">
      <iframe id="nav" src="../../class_list.html?1"></iframe>
      <div id="resizer"></div>
    </div>

    <div id="main" tabindex="-1">
      <div id="header">
        <div id="menu">
  
    <a href="../../_index.html">Index (A)</a> &raquo;
    <span class='title'><span class='object_link'><a href="../../JsonapiCompliable.html" title="JsonapiCompliable (module)">JsonapiCompliable</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Adapters.html" title="JsonapiCompliable::Adapters (module)">Adapters</a></span></span>
     &raquo; 
    <span class="title">ActiveRecordSideloading</span>
  
</div>

        <div id="search">
  
    <a class="full_list_link" id="class_list_link"
        href="../../class_list.html">

        <svg width="24" height="24">
          <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
          <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
          <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
        </svg>
    </a>
  
</div>
        <div class="clear"></div>
      </div>

      <div id="content"><h1>Module: JsonapiCompliable::Adapters::ActiveRecordSideloading
  
  
  
</h1>
<div class="box_info">
  

  
  
  
  
  

  

  
  <dl>
    <dt>Defined in:</dt>
    <dd>lib/jsonapi_compliable/adapters/active_record_sideloading.rb</dd>
  </dl>
  
</div>








  
    <h2>
      Instance Method Summary
      <small><a href="#" class="summary_toggle">collapse</a></small>
    </h2>

    <ul class="summary">
      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#belongs_to-instance_method" title="#belongs_to (instance method)">#<strong>belongs_to</strong>(association_name, scope: nil, resource:, foreign_key:, primary_key: :id, &amp;blk)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'></div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#has_and_belongs_to_many-instance_method" title="#has_and_belongs_to_many (instance method)">#<strong>has_and_belongs_to_many</strong>(association_name, scope: nil, resource:, foreign_key:, primary_key: :id, as: nil, &amp;blk)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'></div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#has_many-instance_method" title="#has_many (instance method)">#<strong>has_many</strong>(association_name, scope: nil, resource:, foreign_key:, primary_key: :id, &amp;blk)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'></div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#has_one-instance_method" title="#has_one (instance method)">#<strong>has_one</strong>(association_name, scope: nil, resource:, foreign_key:, primary_key: :id, &amp;blk)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'></div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#polymorphic_belongs_to-instance_method" title="#polymorphic_belongs_to (instance method)">#<strong>polymorphic_belongs_to</strong>(ssociation_name,, roup_by:,, roups:,, &amp;lk))  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'></div></span>
  
</li>

      
    </ul>
  



  <div id="instance_method_details" class="method_details_list">
    <h2>Instance Method Details</h2>

    
      <div class="method_details first">
  <h3 class="signature first" id="belongs_to-instance_method">
  
    #<strong>belongs_to</strong>(association_name, scope: nil, resource:, foreign_key:, primary_key: :id, &amp;blk)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/adapters/active_record_sideloading.rb', line 27</span>

<span class='kw'>def</span> <span class='id identifier rubyid_belongs_to'>belongs_to</span><span class='lparen'>(</span><span class='id identifier rubyid_association_name'>association_name</span><span class='comma'>,</span> <span class='label'>scope:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>resource:</span><span class='comma'>,</span> <span class='label'>foreign_key:</span><span class='comma'>,</span> <span class='label'>primary_key:</span> <span class='symbol'>:id</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span>
  <span class='id identifier rubyid__scope'>_scope</span> <span class='op'>=</span> <span class='id identifier rubyid_scope'>scope</span>

  <span class='id identifier rubyid_allow_sideload'>allow_sideload</span> <span class='id identifier rubyid_association_name'>association_name</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='symbol'>:belongs_to</span><span class='comma'>,</span> <span class='label'>resource:</span> <span class='id identifier rubyid_resource'>resource</span><span class='comma'>,</span> <span class='label'>foreign_key:</span> <span class='id identifier rubyid_foreign_key'>foreign_key</span><span class='comma'>,</span> <span class='label'>primary_key:</span> <span class='id identifier rubyid_primary_key'>primary_key</span> <span class='kw'>do</span>
    <span class='id identifier rubyid_scope'>scope</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_parents'>parents</span><span class='op'>|</span>
      <span class='id identifier rubyid_parent_ids'>parent_ids</span> <span class='op'>=</span> <span class='id identifier rubyid_parents'>parents</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_p'>p</span><span class='op'>|</span> <span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_foreign_key'>foreign_key</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
      <span class='id identifier rubyid__scope'>_scope</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='id identifier rubyid_primary_key'>primary_key</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_parent_ids'>parent_ids</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_assign'>assign</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_parents'>parents</span><span class='comma'>,</span> <span class='id identifier rubyid_children'>children</span><span class='op'>|</span>
      <span class='id identifier rubyid_parents'>parents</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_parent'>parent</span><span class='op'>|</span>
        <span class='id identifier rubyid_relevant_child'>relevant_child</span> <span class='op'>=</span> <span class='id identifier rubyid_children'>children</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_c'>c</span><span class='op'>|</span> <span class='id identifier rubyid_parent'>parent</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_foreign_key'>foreign_key</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='id identifier rubyid_c'>c</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_primary_key'>primary_key</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
        <span class='id identifier rubyid_parent'>parent</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='symbol'>:#{</span><span class='id identifier rubyid_association_name'>association_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>=</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_relevant_child'>relevant_child</span><span class='rparen'>)</span>
      <span class='kw'>end</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_instance_eval'>instance_eval</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_blk'>blk</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="has_and_belongs_to_many-instance_method">
  
    #<strong>has_and_belongs_to_many</strong>(association_name, scope: nil, resource:, foreign_key:, primary_key: :id, as: nil, &amp;blk)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/adapters/active_record_sideloading.rb', line 69</span>

<span class='kw'>def</span> <span class='id identifier rubyid_has_and_belongs_to_many'>has_and_belongs_to_many</span><span class='lparen'>(</span><span class='id identifier rubyid_association_name'>association_name</span><span class='comma'>,</span> <span class='label'>scope:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>resource:</span><span class='comma'>,</span> <span class='label'>foreign_key:</span><span class='comma'>,</span> <span class='label'>primary_key:</span> <span class='symbol'>:id</span><span class='comma'>,</span> <span class='label'>as:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_through'>through</span> <span class='op'>=</span> <span class='id identifier rubyid_foreign_key'>foreign_key</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
  <span class='id identifier rubyid_fk'>fk</span>      <span class='op'>=</span> <span class='id identifier rubyid_foreign_key'>foreign_key</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
  <span class='id identifier rubyid__scope'>_scope</span>  <span class='op'>=</span> <span class='id identifier rubyid_scope'>scope</span>

  <span class='id identifier rubyid_allow_sideload'>allow_sideload</span> <span class='id identifier rubyid_association_name'>association_name</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='symbol'>:habtm</span><span class='comma'>,</span> <span class='label'>foreign_key:</span> <span class='id identifier rubyid_foreign_key'>foreign_key</span><span class='comma'>,</span> <span class='label'>primary_key:</span> <span class='id identifier rubyid_primary_key'>primary_key</span><span class='comma'>,</span> <span class='label'>resource:</span> <span class='id identifier rubyid_resource'>resource</span> <span class='kw'>do</span>
    <span class='id identifier rubyid_scope'>scope</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_parents'>parents</span><span class='op'>|</span>
      <span class='id identifier rubyid_parent_ids'>parent_ids</span> <span class='op'>=</span> <span class='id identifier rubyid_parents'>parents</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_p'>p</span><span class='op'>|</span> <span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_primary_key'>primary_key</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
      <span class='id identifier rubyid_parent_ids'>parent_ids</span><span class='period'>.</span><span class='id identifier rubyid_uniq!'>uniq!</span>
      <span class='id identifier rubyid_parent_ids'>parent_ids</span><span class='period'>.</span><span class='id identifier rubyid_compact!'>compact!</span>
      <span class='id identifier rubyid__scope'>_scope</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span>
        <span class='period'>.</span><span class='id identifier rubyid_joins'>joins</span><span class='lparen'>(</span><span class='id identifier rubyid_through'>through</span><span class='rparen'>)</span>
        <span class='period'>.</span><span class='id identifier rubyid_preload'>preload</span><span class='lparen'>(</span><span class='id identifier rubyid_through'>through</span><span class='rparen'>)</span> <span class='comment'># otherwise n+1 as we reference in #assign
</span>        <span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='id identifier rubyid_through'>through</span> <span class='op'>=&gt;</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_fk'>fk</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_parent_ids'>parent_ids</span> <span class='rbrace'>}</span><span class='rparen'>)</span>
        <span class='period'>.</span><span class='id identifier rubyid_distinct'>distinct</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_assign'>assign</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_parents'>parents</span><span class='comma'>,</span> <span class='id identifier rubyid_children'>children</span><span class='op'>|</span>
      <span class='id identifier rubyid_parents'>parents</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_parent'>parent</span><span class='op'>|</span>
        <span class='id identifier rubyid_parent'>parent</span><span class='period'>.</span><span class='id identifier rubyid_association'>association</span><span class='lparen'>(</span><span class='id identifier rubyid_association_name'>association_name</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_loaded!'>loaded!</span>
        <span class='id identifier rubyid_relevant_children'>relevant_children</span> <span class='op'>=</span> <span class='id identifier rubyid_children'>children</span><span class='period'>.</span><span class='id identifier rubyid_select'>select</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_c'>c</span><span class='op'>|</span> <span class='id identifier rubyid_c'>c</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_through'>through</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_ct'>ct</span><span class='op'>|</span> <span class='id identifier rubyid_ct'>ct</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_fk'>fk</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='id identifier rubyid_parent'>parent</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_primary_key'>primary_key</span><span class='rparen'>)</span> <span class='rbrace'>}</span> <span class='rbrace'>}</span>
        <span class='id identifier rubyid_relevant_children'>relevant_children</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_c'>c</span><span class='op'>|</span>
          <span class='id identifier rubyid_parent'>parent</span><span class='period'>.</span><span class='id identifier rubyid_association'>association</span><span class='lparen'>(</span><span class='id identifier rubyid_association_name'>association_name</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_add_to_target'>add_to_target</span><span class='lparen'>(</span><span class='id identifier rubyid_c'>c</span><span class='comma'>,</span> <span class='symbol'>:skip_callbacks</span><span class='rparen'>)</span>
        <span class='kw'>end</span>
      <span class='kw'>end</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_instance_eval'>instance_eval</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_blk'>blk</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="has_many-instance_method">
  
    #<strong>has_many</strong>(association_name, scope: nil, resource:, foreign_key:, primary_key: :id, &amp;blk)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/adapters/active_record_sideloading.rb', line 4</span>

<span class='kw'>def</span> <span class='id identifier rubyid_has_many'>has_many</span><span class='lparen'>(</span><span class='id identifier rubyid_association_name'>association_name</span><span class='comma'>,</span> <span class='label'>scope:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>resource:</span><span class='comma'>,</span> <span class='label'>foreign_key:</span><span class='comma'>,</span> <span class='label'>primary_key:</span> <span class='symbol'>:id</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span>
  <span class='id identifier rubyid__scope'>_scope</span> <span class='op'>=</span> <span class='id identifier rubyid_scope'>scope</span>

  <span class='id identifier rubyid_allow_sideload'>allow_sideload</span> <span class='id identifier rubyid_association_name'>association_name</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='symbol'>:has_many</span><span class='comma'>,</span> <span class='label'>resource:</span> <span class='id identifier rubyid_resource'>resource</span><span class='comma'>,</span> <span class='label'>foreign_key:</span> <span class='id identifier rubyid_foreign_key'>foreign_key</span><span class='comma'>,</span> <span class='label'>primary_key:</span> <span class='id identifier rubyid_primary_key'>primary_key</span> <span class='kw'>do</span>
    <span class='id identifier rubyid_scope'>scope</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_parents'>parents</span><span class='op'>|</span>
      <span class='id identifier rubyid_parent_ids'>parent_ids</span> <span class='op'>=</span> <span class='id identifier rubyid_parents'>parents</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_p'>p</span><span class='op'>|</span> <span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_primary_key'>primary_key</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
      <span class='id identifier rubyid__scope'>_scope</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='id identifier rubyid_foreign_key'>foreign_key</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_parent_ids'>parent_ids</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_assign'>assign</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_parents'>parents</span><span class='comma'>,</span> <span class='id identifier rubyid_children'>children</span><span class='op'>|</span>
      <span class='id identifier rubyid_parents'>parents</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_parent'>parent</span><span class='op'>|</span>
        <span class='id identifier rubyid_parent'>parent</span><span class='period'>.</span><span class='id identifier rubyid_association'>association</span><span class='lparen'>(</span><span class='id identifier rubyid_association_name'>association_name</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_loaded!'>loaded!</span>
        <span class='id identifier rubyid_relevant_children'>relevant_children</span> <span class='op'>=</span> <span class='id identifier rubyid_children'>children</span><span class='period'>.</span><span class='id identifier rubyid_select'>select</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_c'>c</span><span class='op'>|</span> <span class='id identifier rubyid_c'>c</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_foreign_key'>foreign_key</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='id identifier rubyid_parent'>parent</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_primary_key'>primary_key</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
        <span class='id identifier rubyid_relevant_children'>relevant_children</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_c'>c</span><span class='op'>|</span>
          <span class='id identifier rubyid_parent'>parent</span><span class='period'>.</span><span class='id identifier rubyid_association'>association</span><span class='lparen'>(</span><span class='id identifier rubyid_association_name'>association_name</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_add_to_target'>add_to_target</span><span class='lparen'>(</span><span class='id identifier rubyid_c'>c</span><span class='comma'>,</span> <span class='symbol'>:skip_callbacks</span><span class='rparen'>)</span>
        <span class='kw'>end</span>
      <span class='kw'>end</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_instance_eval'>instance_eval</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_blk'>blk</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="has_one-instance_method">
  
    #<strong>has_one</strong>(association_name, scope: nil, resource:, foreign_key:, primary_key: :id, &amp;blk)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/adapters/active_record_sideloading.rb', line 47</span>

<span class='kw'>def</span> <span class='id identifier rubyid_has_one'>has_one</span><span class='lparen'>(</span><span class='id identifier rubyid_association_name'>association_name</span><span class='comma'>,</span> <span class='label'>scope:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>resource:</span><span class='comma'>,</span> <span class='label'>foreign_key:</span><span class='comma'>,</span> <span class='label'>primary_key:</span> <span class='symbol'>:id</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span>
  <span class='id identifier rubyid__scope'>_scope</span> <span class='op'>=</span> <span class='id identifier rubyid_scope'>scope</span>

  <span class='id identifier rubyid_allow_sideload'>allow_sideload</span> <span class='id identifier rubyid_association_name'>association_name</span><span class='comma'>,</span> <span class='label'>type:</span> <span class='symbol'>:has_one</span><span class='comma'>,</span> <span class='label'>foreign_key:</span> <span class='id identifier rubyid_foreign_key'>foreign_key</span><span class='comma'>,</span> <span class='label'>primary_key:</span> <span class='id identifier rubyid_primary_key'>primary_key</span><span class='comma'>,</span> <span class='label'>resource:</span> <span class='id identifier rubyid_resource'>resource</span> <span class='kw'>do</span>
    <span class='id identifier rubyid_scope'>scope</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_parents'>parents</span><span class='op'>|</span>
      <span class='id identifier rubyid_parent_ids'>parent_ids</span> <span class='op'>=</span> <span class='id identifier rubyid_parents'>parents</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_p'>p</span><span class='op'>|</span> <span class='id identifier rubyid_p'>p</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_primary_key'>primary_key</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
      <span class='id identifier rubyid__scope'>_scope</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='id identifier rubyid_foreign_key'>foreign_key</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_parent_ids'>parent_ids</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_assign'>assign</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_parents'>parents</span><span class='comma'>,</span> <span class='id identifier rubyid_children'>children</span><span class='op'>|</span>
      <span class='id identifier rubyid_parents'>parents</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_parent'>parent</span><span class='op'>|</span>
        <span class='id identifier rubyid_parent'>parent</span><span class='period'>.</span><span class='id identifier rubyid_association'>association</span><span class='lparen'>(</span><span class='id identifier rubyid_association_name'>association_name</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_loaded!'>loaded!</span>
        <span class='id identifier rubyid_relevant_child'>relevant_child</span> <span class='op'>=</span> <span class='id identifier rubyid_children'>children</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_c'>c</span><span class='op'>|</span> <span class='id identifier rubyid_c'>c</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_foreign_key'>foreign_key</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='id identifier rubyid_parent'>parent</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_primary_key'>primary_key</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
        <span class='kw'>next</span> <span class='kw'>unless</span> <span class='id identifier rubyid_relevant_child'>relevant_child</span>
        <span class='id identifier rubyid_parent'>parent</span><span class='period'>.</span><span class='id identifier rubyid_association'>association</span><span class='lparen'>(</span><span class='id identifier rubyid_association_name'>association_name</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_replace'>replace</span><span class='lparen'>(</span><span class='id identifier rubyid_relevant_child'>relevant_child</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
      <span class='kw'>end</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_instance_eval'>instance_eval</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_blk'>blk</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="polymorphic_belongs_to-instance_method">
  
    #<strong>polymorphic_belongs_to</strong>(ssociation_name,, roup_by:,, roups:,, &amp;lk))  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/adapters/active_record_sideloading.rb', line 100</span>

ef polymorphic_belongs_to(association_name, group_by:, groups:, &amp;blk)
  allow_sideload association_name, type: :polymorphic_belongs_to, polymorphic: true do
    group_by(group_by)

    groups.each_pair do |type, config|
      primary_key = config[:primary_key] || :id
      foreign_key = config[:foreign_key]

      allow_sideload type, parent: self, primary_key: primary_key, foreign_key: foreign_key, type: :belongs_to, resource: config[:resource] do
        scope do |parents|
          parent_ids = parents.map { |p| p.send(foreign_key) }
          parent_ids.compact!
          parent_ids.uniq!
          config[:scope].call.where(primary_key =&gt; parent_ids)
        end

        assign do |parents, children|
          parents.each do |parent|
            parent.send(:&quot;#{association_name}=&quot;, children.find { |c| c.send(primary_key) == parent.send(foreign_key) })
          end
        end
      end
    end
  end

  instance_eval(&amp;blk) if blk
end</pre>
    </td>
  </tr>
</table>
</div>
    
  </div>

</div>

      <div id="footer">
  Generated on Mon May  7 09:24:11 2018 by
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
  0.9.9 (ruby-2.3.0).
</div>

    </div>
  </body>
</html>