<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
  Module: JsonapiCompliable::Extensions::ExtraAttribute
  
    &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::Extensions::ExtraAttribute";
  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 (E)</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="../Extensions.html" title="JsonapiCompliable::Extensions (module)">Extensions</a></span></span>
     &raquo; 
    <span class="title">ExtraAttribute</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::Extensions::ExtraAttribute
  
  
  
</h1>
<div class="box_info">
  

  
  
  
  
  

  

  
  <dl>
    <dt>Defined in:</dt>
    <dd>lib/jsonapi_compliable/extensions/extra_attribute.rb</dd>
  </dl>
  
</div>

<h2>Overview</h2><div class="docstring">
  <div class="discussion">
    
<p>Only render a given attribute when the user specifically requests it.
Useful for computationally-expensive attributes that are not required on
every request.</p>

<p>This class handles the serialization, but you may also want to run code
during scoping (for instance, to eager load associations referenced by this
extra attribute. See (Resource.extra_field).</p>


  </div>
</div>
<div class="tags">
  
  <div class="examples">
    <p class="tag_title">Examples:</p>
    
      
        <p class="example_title"><div class='inline'>
<p>Basic Usage</p>
</div></p>
      
      <pre class="example code"><code><span class='comment'># Will only be rendered on user request, ie
</span><span class='comment'># /people?extra_fields[people]=net_worth
</span><span class='id identifier rubyid_extra_attribute'>extra_attribute</span> <span class='symbol'>:net_worth</span></code></pre>
    
      
        <p class="example_title"><div class='inline'>
<p>Eager Loading</p>
</div></p>
      
      <pre class="example code"><code><span class='kw'>class</span> <span class='const'>PersonResource</span> <span class='op'>&lt;</span> <span class='const'>ApplicationResource</span>
  <span class='comment'># If the user requests the &#39;net_worth&#39; attribute, make sure
</span>  <span class='comment'># &#39;assets&#39; are eager loaded
</span>  <span class='id identifier rubyid_extra_field'>extra_field</span> <span class='symbol'>:net_worth</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_scope'>scope</span><span class='op'>|</span>
    <span class='id identifier rubyid_scope'>scope</span><span class='period'>.</span><span class='id identifier rubyid_includes'>includes</span><span class='lparen'>(</span><span class='symbol'>:assets</span><span class='rparen'>)</span>
  <span class='kw'>end</span>
<span class='kw'>end</span>

<span class='kw'>class</span> <span class='const'>SerializablePerson</span> <span class='op'>&lt;</span> <span class='const'>JSONAPI</span><span class='op'>::</span><span class='const'>Serializable</span><span class='op'>::</span><span class='const'>Resource</span>
  <span class='comment'># ... code ...
</span>  <span class='id identifier rubyid_extra_attribute'>extra_attribute</span> <span class='symbol'>:net_worth</span> <span class='kw'>do</span>
    <span class='ivar'>@object</span><span class='period'>.</span><span class='id identifier rubyid_assets'>assets</span><span class='period'>.</span><span class='id identifier rubyid_sum'>sum</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:value</span><span class='rparen'>)</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></code></pre>
    
  </div>


  <p class="tag_title">See Also:</p>
  <ul class="see">
    
      <li><span class='object_link'><a href="../Resource.html#extra_field-class_method" title="JsonapiCompliable::Resource.extra_field (method)">Resource.extra_field</a></span></li>
    
  </ul>

</div><h2>Defined Under Namespace</h2>
<p class="children">
  
    
      <strong class="modules">Modules:</strong> <span class='object_link'><a href="ExtraAttribute/ClassMethods.html" title="JsonapiCompliable::Extensions::ExtraAttribute::ClassMethods (module)">ClassMethods</a></span>
    
  
    
  
</p>







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

    <ul class="summary">
      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#included-class_method" title="included (class method)">.<strong>included</strong>(klass)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

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

      
    </ul>
  



  <div id="class_method_details" class="method_details_list">
    <h2>Class Method Details</h2>

    
      <div class="method_details first">
  <h3 class="signature first" id="included-class_method">
  
    .<strong>included</strong>(klass)  &#x21d2; <tt>Object</tt> 
  

  

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


36
37
38</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/extensions/extra_attribute.rb', line 36</span>

<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_included'>included</span><span class='lparen'>(</span><span class='id identifier rubyid_klass'>klass</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_klass'>klass</span><span class='period'>.</span><span class='id identifier rubyid_extend'>extend</span> <span class='const'><span class='object_link'><a href="ExtraAttribute/ClassMethods.html" title="JsonapiCompliable::Extensions::ExtraAttribute::ClassMethods (module)">ClassMethods</a></span></span>
<span class='kw'>end</span></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>