<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title> Class: Dynamoid::Indexes::Index — Documentation by YARD 0.8.6.1 </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"> hasFrames = window.top.frames.main ? true : false; relpath = '../../'; framesUrl = "../../frames.html#!" + escape(window.location.href); </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 id="header"> <div id="menu"> <a href="../../_index.html">Index (I)</a> » <span class='title'><span class='object_link'><a href="../../Dynamoid.html" title="Dynamoid (module)">Dynamoid</a></span></span> » <span class='title'><span class='object_link'><a href="../Indexes.html" title="Dynamoid::Indexes (module)">Indexes</a></span></span> » <span class="title">Index</span> <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div> </div> <div id="search"> <a class="full_list_link" id="class_list_link" href="../../class_list.html"> Class List </a> <a class="full_list_link" id="method_list_link" href="../../method_list.html"> Method List </a> <a class="full_list_link" id="file_list_link" href="../../file_list.html"> File List </a> </div> <div class="clear"></div> </div> <iframe id="search_frame"></iframe> <div id="content"><h1>Class: Dynamoid::Indexes::Index </h1> <dl class="box"> <dt class="r1">Inherits:</dt> <dd class="r1"> <span class="inheritName">Object</span> <ul class="fullTree"> <li>Object</li> <li class="next">Dynamoid::Indexes::Index</li> </ul> <a href="#" class="inheritanceTree">show all</a> </dd> <dt class="r2 last">Defined in:</dt> <dd class="r2 last">lib/dynamoid/indexes/index.rb</dd> </dl> <div class="clear"></div> <h2>Overview</h2><div class="docstring"> <div class="discussion"> <p>The class contains all the information an index contains, including its keys and which attributes it covers.</p> </div> </div> <div class="tags"> </div> <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2> <ul class="summary"> <li class="public "> <span class="summary_signature"> <a href="#hash_keys-instance_method" title="#hash_keys (instance method)">- (Object) <strong>hash_keys</strong> </a> </span> <span class="summary_desc"><div class='inline'><p>Returns the value of attribute hash_keys.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#name-instance_method" title="#name (instance method)">- (Object) <strong>name</strong> </a> </span> <span class="summary_desc"><div class='inline'><p>Returns the value of attribute name.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#range_keys-instance_method" title="#range_keys (instance method)">- (Object) <strong>range_keys</strong> </a> (also: #range_key?) </span> <span class="summary_desc"><div class='inline'><p>Returns the value of attribute range_keys.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#source-instance_method" title="#source (instance method)">- (Object) <strong>source</strong> </a> </span> <span class="summary_desc"><div class='inline'><p>Returns the value of attribute source.</p> </div></span> </li> </ul> <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="#delete-instance_method" title="#delete (instance method)">- (Object) <strong>delete</strong>(obj, changed_attributes = false) </a> </span> <span class="summary_desc"><div class='inline'><p>Delete an object from this index, preserving existing ids if there are any, and failing gracefully if for some reason the index doesn't already have this object in it.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#initialize-instance_method" title="#initialize (instance method)">- (Index) <strong>initialize</strong>(source, name, options = {}) </a> </span> <span class="note title constructor">constructor</span> <span class="summary_desc"><div class='inline'><p>Create a new index.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#keys-instance_method" title="#keys (instance method)">- (Object) <strong>keys</strong> </a> </span> <span class="summary_desc"><div class='inline'><p>Return the array of keys this index uses for its table.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#save-instance_method" title="#save (instance method)">- (Object) <strong>save</strong>(obj) </a> </span> <span class="summary_desc"><div class='inline'><p>Save an object to this index, merging it with existing ids if there's already something present at this index location.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#sort-instance_method" title="#sort (instance method)">- (Object) <strong>sort</strong>(objs) </a> </span> <span class="summary_desc"><div class='inline'><p>Sort objects into alphabetical strings, used for composing index names correctly (since we always assume they're alphabetical).</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#table_name-instance_method" title="#table_name (instance method)">- (Object) <strong>table_name</strong> </a> </span> <span class="summary_desc"><div class='inline'><p>Return the table name for this index.</p> </div></span> </li> <li class="public "> <span class="summary_signature"> <a href="#values-instance_method" title="#values (instance method)">- (Hash) <strong>values</strong>(attrs, changed_attributes = false) </a> </span> <span class="summary_desc"><div class='inline'><p>Given either an object or a list of attributes, generate a hash key and a range key for the index.</p> </div></span> </li> </ul> <div id="constructor_details" class="method_details_list"> <h2>Constructor Details</h2> <div class="method_details first"> <h3 class="signature first" id="initialize-instance_method"> - (<tt><span class='object_link'><a href="" title="Dynamoid::Indexes::Index (class)">Index</a></span></tt>) <strong>initialize</strong>(source, name, options = {}) </h3><div class="docstring"> <div class="discussion"> <p>Create a new index. Pass either :range => true or :range => :column_name to create a ranged index on that column.</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>source</span> <span class='type'>(<tt>Class</tt>)</span> — <div class='inline'><p>the source class for the index</p> </div> </li> <li> <span class='name'>name</span> <span class='type'>(<tt>Symbol</tt>)</span> — <div class='inline'><p>the name of the index</p> </div> </li> </ul> <p class="tag_title">Raises:</p> <ul class="raise"> <li> <span class='type'>(<tt><span class='object_link'><a href="../Errors/InvalidField.html" title="Dynamoid::Errors::InvalidField (class)">Dynamoid::Errors::InvalidField</a></span></tt>)</span> </li> </ul> <p class="tag_title">Since:</p> <ul class="since"> <li> <div class='inline'><p>0.2.0</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 16 17 18 19 20 21 22 23 24 25 26 27 28</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/dynamoid/indexes/index.rb', line 16</span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_source'>source</span><span class='comma'>,</span> <span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='ivar'>@source</span> <span class='op'>=</span> <span class='id identifier rubyid_source'>source</span> <span class='kw'>if</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='symbol'>:range</span><span class='rparen'>)</span> <span class='ivar'>@range_keys</span> <span class='op'>=</span> <span class='id identifier rubyid_sort'>sort</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span> <span class='kw'>elsif</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:range_key</span><span class='rbracket'>]</span> <span class='ivar'>@range_keys</span> <span class='op'>=</span> <span class='id identifier rubyid_sort'>sort</span><span class='lparen'>(</span><span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span><span class='symbol'>:range_key</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>end</span> <span class='ivar'>@hash_keys</span> <span class='op'>=</span> <span class='id identifier rubyid_sort'>sort</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span> <span class='ivar'>@name</span> <span class='op'>=</span> <span class='id identifier rubyid_sort'>sort</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_hash_keys'>hash_keys</span><span class='comma'>,</span> <span class='id identifier rubyid_range_keys'>range_keys</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>InvalidField</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>A key specified for an index is not a field</span><span class='tstring_end'>'</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_all?'>all?</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_n'>n</span><span class='op'>|</span> <span class='id identifier rubyid_source'>source</span><span class='period'>.</span><span class='id identifier rubyid_attributes'>attributes</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_n'>n</span><span class='rparen'>)</span><span class='rbrace'>}</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> <div id="instance_attr_details" class="attr_details"> <h2>Instance Attribute Details</h2> <span id="hash_keys=-instance_method"></span> <div class="method_details first"> <h3 class="signature first" id="hash_keys-instance_method"> - (<tt>Object</tt>) <strong>hash_keys</strong> </h3><div class="docstring"> <div class="discussion"> <p>Returns the value of attribute hash_keys</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 7 8 9</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/dynamoid/indexes/index.rb', line 7</span> <span class='kw'>def</span> <span class='id identifier rubyid_hash_keys'>hash_keys</span> <span class='ivar'>@hash_keys</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <span id="name=-instance_method"></span> <div class="method_details "> <h3 class="signature " id="name-instance_method"> - (<tt>Object</tt>) <strong>name</strong> </h3><div class="docstring"> <div class="discussion"> <p>Returns the value of attribute name</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 7 8 9</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/dynamoid/indexes/index.rb', line 7</span> <span class='kw'>def</span> <span class='id identifier rubyid_name'>name</span> <span class='ivar'>@name</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <span id="range_keys=-instance_method"></span> <div class="method_details "> <h3 class="signature " id="range_keys-instance_method"> - (<tt>Object</tt>) <strong>range_keys</strong> <span class="aliases">Also known as: <span class="names"><span id='range_key?-instance_method'>range_key?</span></span> </span> </h3><div class="docstring"> <div class="discussion"> <p>Returns the value of attribute range_keys</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 7 8 9</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/dynamoid/indexes/index.rb', line 7</span> <span class='kw'>def</span> <span class='id identifier rubyid_range_keys'>range_keys</span> <span class='ivar'>@range_keys</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <span id="source=-instance_method"></span> <div class="method_details "> <h3 class="signature " id="source-instance_method"> - (<tt>Object</tt>) <strong>source</strong> </h3><div class="docstring"> <div class="discussion"> <p>Returns the value of attribute source</p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 7 8 9</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/dynamoid/indexes/index.rb', line 7</span> <span class='kw'>def</span> <span class='id identifier rubyid_source'>source</span> <span class='ivar'>@source</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> <div id="instance_method_details" class="method_details_list"> <h2>Instance Method Details</h2> <div class="method_details first"> <h3 class="signature first" id="delete-instance_method"> - (<tt>Object</tt>) <strong>delete</strong>(obj, changed_attributes = false) </h3><div class="docstring"> <div class="discussion"> <p>Delete an object from this index, preserving existing ids if there are any, and failing gracefully if for some reason the index doesn't already have this object in it.</p> </div> </div> <div class="tags"> <p class="tag_title">Since:</p> <ul class="since"> <li> <div class='inline'><p>0.2.0</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 93 94 95 96 97 98 99</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/dynamoid/indexes/index.rb', line 93</span> <span class='kw'>def</span> <span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_obj'>obj</span><span class='comma'>,</span> <span class='id identifier rubyid_changed_attributes'>changed_attributes</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span> <span class='id identifier rubyid_values'>values</span> <span class='op'>=</span> <span class='id identifier rubyid_values'>values</span><span class='lparen'>(</span><span class='id identifier rubyid_obj'>obj</span><span class='comma'>,</span> <span class='id identifier rubyid_changed_attributes'>changed_attributes</span><span class='rparen'>)</span> <span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:hash_value</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>||</span> <span class='lparen'>(</span><span class='op'>!</span><span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:range_value</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>&&</span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:range_value</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span><span class='rparen'>)</span> <span class='id identifier rubyid_existing'>existing</span> <span class='op'>=</span> <span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Adapter</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_table_name'>table_name</span><span class='comma'>,</span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:hash_value</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbrace'>{</span> <span class='symbol'>:range_key</span> <span class='op'>=></span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:range_value</span><span class='rbracket'>]</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>unless</span> <span class='id identifier rubyid_existing'>existing</span> <span class='op'>&&</span> <span class='id identifier rubyid_existing'>existing</span><span class='lbracket'>[</span><span class='symbol'>:ids</span><span class='rbracket'>]</span> <span class='op'>&&</span> <span class='id identifier rubyid_existing'>existing</span><span class='lbracket'>[</span><span class='symbol'>:ids</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_obj'>obj</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='rparen'>)</span> <span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Adapter</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_table_name'>table_name</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='symbol'>:id</span> <span class='op'>=></span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:hash_value</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='symbol'>:ids</span> <span class='op'>=></span> <span class='lparen'>(</span><span class='id identifier rubyid_existing'>existing</span><span class='lbracket'>[</span><span class='symbol'>:ids</span><span class='rbracket'>]</span> <span class='op'>-</span> <span class='const'>Set</span><span class='lbracket'>[</span><span class='id identifier rubyid_obj'>obj</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='symbol'>:range</span> <span class='op'>=></span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:range_value</span><span class='rbracket'>]</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="keys-instance_method"> - (<tt>Object</tt>) <strong>keys</strong> </h3><div class="docstring"> <div class="discussion"> <p>Return the array of keys this index uses for its table.</p> </div> </div> <div class="tags"> <p class="tag_title">Since:</p> <ul class="since"> <li> <div class='inline'><p>0.2.0</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 43 44 45</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/dynamoid/indexes/index.rb', line 43</span> <span class='kw'>def</span> <span class='id identifier rubyid_keys'>keys</span> <span class='lbracket'>[</span><span class='const'>Array</span><span class='lparen'>(</span><span class='id identifier rubyid_hash_keys'>hash_keys</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='const'>Array</span><span class='lparen'>(</span><span class='id identifier rubyid_range_keys'>range_keys</span><span class='rparen'>)</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="save-instance_method"> - (<tt>Object</tt>) <strong>save</strong>(obj) </h3><div class="docstring"> <div class="discussion"> <p>Save an object to this index, merging it with existing ids if there's already something present at this index location. First, though, delete this object from its old indexes (so the object isn't listed in an erroneous index).</p> </div> </div> <div class="tags"> <p class="tag_title">Since:</p> <ul class="since"> <li> <div class='inline'><p>0.2.0</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 80 81 82 83 84 85 86 87</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/dynamoid/indexes/index.rb', line 80</span> <span class='kw'>def</span> <span class='id identifier rubyid_save'>save</span><span class='lparen'>(</span><span class='id identifier rubyid_obj'>obj</span><span class='rparen'>)</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='id identifier rubyid_obj'>obj</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span> <span class='id identifier rubyid_values'>values</span> <span class='op'>=</span> <span class='id identifier rubyid_values'>values</span><span class='lparen'>(</span><span class='id identifier rubyid_obj'>obj</span><span class='rparen'>)</span> <span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:hash_value</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>||</span> <span class='lparen'>(</span><span class='op'>!</span><span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:range_value</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>&&</span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:range_value</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span><span class='rparen'>)</span> <span class='id identifier rubyid_existing'>existing</span> <span class='op'>=</span> <span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Adapter</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_table_name'>table_name</span><span class='comma'>,</span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:hash_value</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbrace'>{</span> <span class='symbol'>:range_key</span> <span class='op'>=></span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:range_value</span><span class='rbracket'>]</span> <span class='rbrace'>}</span><span class='rparen'>)</span> <span class='id identifier rubyid_ids'>ids</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='lparen'>(</span><span class='id identifier rubyid_existing'>existing</span> <span class='kw'>and</span> <span class='id identifier rubyid_existing'>existing</span><span class='lbracket'>[</span><span class='symbol'>:ids</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='kw'>or</span> <span class='const'>Set</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='rparen'>)</span> <span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Adapter</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_table_name'>table_name</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='symbol'>:id</span> <span class='op'>=></span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:hash_value</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='symbol'>:ids</span> <span class='op'>=></span> <span class='id identifier rubyid_ids'>ids</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_obj'>obj</span><span class='period'>.</span><span class='id identifier rubyid_id'>id</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='symbol'>:range</span> <span class='op'>=></span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='symbol'>:range_value</span><span class='rbracket'>]</span><span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="sort-instance_method"> - (<tt>Object</tt>) <strong>sort</strong>(objs) </h3><div class="docstring"> <div class="discussion"> <p>Sort objects into alphabetical strings, used for composing index names correctly (since we always assume they're alphabetical).</p> </div> </div> <div class="tags"> <div class="examples"> <p class="tag_title">Examples:</p> <p class="example_title"><div class='inline'><p>find all users by first and last name</p> </div></p> <pre class="example code"><code><span class='id identifier rubyid_sort'>sort</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='symbol'>:gamma</span><span class='comma'>,</span> <span class='symbol'>:alpha</span><span class='comma'>,</span> <span class='symbol'>:beta</span><span class='comma'>,</span> <span class='symbol'>:omega</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='comment'># => [:alpha, :beta, :gamma, :omega]</span></code></pre> </div> <p class="tag_title">Since:</p> <ul class="since"> <li> <div class='inline'><p>0.2.0</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 36 37 38</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/dynamoid/indexes/index.rb', line 36</span> <span class='kw'>def</span> <span class='id identifier rubyid_sort'>sort</span><span class='lparen'>(</span><span class='id identifier rubyid_objs'>objs</span><span class='rparen'>)</span> <span class='const'>Array</span><span class='lparen'>(</span><span class='id identifier rubyid_objs'>objs</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:to_s</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_sort'>sort</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:to_sym</span><span class='rparen'>)</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="table_name-instance_method"> - (<tt>Object</tt>) <strong>table_name</strong> </h3><div class="docstring"> <div class="discussion"> <p>Return the table name for this index.</p> </div> </div> <div class="tags"> <p class="tag_title">Since:</p> <ul class="since"> <li> <div class='inline'><p>0.2.0</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 50 51 52</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/dynamoid/indexes/index.rb', line 50</span> <span class='kw'>def</span> <span class='id identifier rubyid_table_name'>table_name</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Config</span><span class='period'>.</span><span class='id identifier rubyid_namespace'>namespace</span><span class='rbrace'>}</span><span class='tstring_content'>_index_</span><span class='tstring_end'>"</span></span> <span class='op'>+</span> <span class='id identifier rubyid_source'>source</span><span class='period'>.</span><span class='id identifier rubyid_table_name'>table_name</span><span class='period'>.</span><span class='id identifier rubyid_sub'>sub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='const'>Dynamoid</span><span class='op'>::</span><span class='const'>Config</span><span class='period'>.</span><span class='id identifier rubyid_namespace'>namespace</span><span class='rbrace'>}</span><span class='tstring_content'>_</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_singularize'>singularize</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>_</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:to_s</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:pluralize</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>_and_</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> <div class="method_details "> <h3 class="signature " id="values-instance_method"> - (<tt>Hash</tt>) <strong>values</strong>(attrs, changed_attributes = false) </h3><div class="docstring"> <div class="discussion"> <p>Given either an object or a list of attributes, generate a hash key and a range key for the index. Optionally pass in true to changed_attributes for a list of all the object's dirty attributes in convenient index form (for deleting stale information from the indexes).</p> </div> </div> <div class="tags"> <p class="tag_title">Parameters:</p> <ul class="param"> <li> <span class='name'>attrs</span> <span class='type'>(<tt>Object</tt>)</span> — <div class='inline'><p>either an object that responds to :attributes, or a hash of attributes</p> </div> </li> </ul> <p class="tag_title">Returns:</p> <ul class="return"> <li> <span class='type'>(<tt>Hash</tt>)</span> — <div class='inline'><p>a hash with the keys :hash_value and :range_value</p> </div> </li> </ul> <p class="tag_title">Since:</p> <ul class="since"> <li> <div class='inline'><p>0.2.0</p> </div> </li> </ul> </div><table class="source_code"> <tr> <td> <pre class="lines"> 63 64 65 66 67 68 69 70 71 72 73 74</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/dynamoid/indexes/index.rb', line 63</span> <span class='kw'>def</span> <span class='id identifier rubyid_values'>values</span><span class='lparen'>(</span><span class='id identifier rubyid_attrs'>attrs</span><span class='comma'>,</span> <span class='id identifier rubyid_changed_attributes'>changed_attributes</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_changed_attributes'>changed_attributes</span> <span class='id identifier rubyid_hash'>hash</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='period'>.</span><span class='id identifier rubyid_changes'>changes</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_k'>k</span><span class='comma'>,</span> <span class='id identifier rubyid_v'>v</span><span class='op'>|</span> <span class='id identifier rubyid_hash'>hash</span><span class='lbracket'>[</span><span class='id identifier rubyid_k'>k</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_v'>v</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span> <span class='op'>||</span> <span class='id identifier rubyid_v'>v</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='rparen'>)</span><span class='rbrace'>}</span> <span class='id identifier rubyid_attrs'>attrs</span> <span class='op'>=</span> <span class='id identifier rubyid_hash'>hash</span> <span class='kw'>end</span> <span class='id identifier rubyid_attrs'>attrs</span> <span class='op'>=</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='symbol'>:attributes</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:attributes</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_tap'>tap</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_hash'>hash</span><span class='op'>|</span> <span class='id identifier rubyid_hash'>hash</span><span class='lbracket'>[</span><span class='symbol'>:hash_value</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_hash_keys'>hash_keys</span><span class='period'>.</span><span class='id identifier rubyid_collect'>collect</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='op'>|</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>.</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span> <span class='id identifier rubyid_hash'>hash</span><span class='lbracket'>[</span><span class='symbol'>:range_value</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_range_keys'>range_keys</span><span class='period'>.</span><span class='id identifier rubyid_inject'>inject</span><span class='lparen'>(</span><span class='float'>0.0</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_sum'>sum</span><span class='comma'>,</span> <span class='id identifier rubyid_key'>key</span><span class='op'>|</span> <span class='id identifier rubyid_sum'>sum</span> <span class='op'>+</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_range_key?'>range_key?</span> <span class='kw'>end</span> <span class='kw'>end</span></pre> </td> </tr> </table> </div> </div> </div> <div id="footer"> Generated on Thu Jun 27 21:59:13 2013 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a> 0.8.6.1 (ruby-1.9.3). </div> </body> </html>