mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
262 lines
13 KiB
HTML
262 lines
13 KiB
HTML
<!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>
|
|
File: README
|
|
|
|
— Documentation by YARD 0.8.7.6
|
|
|
|
</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#!file.README.html";
|
|
</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</a> »
|
|
<span class="title">File: README</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"><div id='filecontents'>
|
|
<h1 id="label-ActiveModelSerializers">ActiveModelSerializers</h1>
|
|
<table>
|
|
<tr>
|
|
<td>Build Status</td>
|
|
<td>
|
|
<a href="https://travis-ci.org/rails-api/active_model_serializers"><img src="https://travis-ci.org/rails-api/active_model_serializers.svg?branch=master" alt="Build Status" ></a>
|
|
<a href="https://ci.appveyor.com/project/joaomdmoura/active-model-serializers/branch/master"><img src="https://ci.appveyor.com/api/projects/status/x6xdjydutm54gvyt/branch/master?svg=true" alt="Build status"></a>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Code Quality</td>
|
|
<td>
|
|
<a href="https://codeclimate.com/github/rails-api/active_model_serializers"><img src="https://codeclimate.com/github/rails-api/active_model_serializers/badges/gpa.svg" alt="Code Quality"></a>
|
|
<a href="https://codebeat.co/projects/github-com-rails-api-active_model_serializers"><img src="https://codebeat.co/badges/a9ab35fa-8b5a-4680-9d4e-a81f9a55ebcd" alt="codebeat" ></a>
|
|
<a href="https://codeclimate.com/github/rails-api/active_model_serializers/coverage"><img src="https://codeclimate.com/github/rails-api/active_model_serializers/badges/coverage.svg" alt="Test Coverage"></a>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Issue Stats</td>
|
|
<td>
|
|
<a href="https://github.com/rails-api/active_model_serializers/pulse/monthly">Pulse</a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<h2 id="label-About">About</h2>
|
|
|
|
<p>ActiveModelSerializers brings convention over configuration to your JSON
|
|
generation.</p>
|
|
|
|
<p>ActiveModelSerializers works through two components:
|
|
<strong>serializers</strong> and <strong>adapters</strong>.</p>
|
|
|
|
<p>Serializers describe <em>which</em> attributes and relationships should be
|
|
serialized.</p>
|
|
|
|
<p>Adapters describe <em>how</em> attributes and relationships should be
|
|
serialized.</p>
|
|
|
|
<p>SerializableResource co-ordinates the resource, Adapter and Serializer to
|
|
produce the resource serialization. The serialization has the
|
|
<code>#as_json</code>, <code>#to_json</code> and
|
|
<code>#serializable_hash</code> methods used by the Rails JSON Renderer.
|
|
(SerializableResource actually delegates these methods to the adapter.)</p>
|
|
|
|
<p>By default ActiveModelSerializers will use the <strong>Attributes
|
|
Adapter</strong> (no JSON root). But we strongly advise you to use
|
|
<strong>JsonApi Adapter</strong>, which follows 1.0 of the format specified
|
|
in <a href="http://jsonapi.org/format">jsonapi.org/format</a>. Check how to
|
|
change the adapter in the sections below.</p>
|
|
|
|
<p><code>0.10.x</code> is <strong>not</strong> backward compatible with
|
|
<code>0.9.x</code> nor <code>0.8.x</code>.</p>
|
|
|
|
<p><code>0.10.x</code> is based on the <code>0.8.0</code> code, but with a
|
|
more flexible architecture. We'd love your help. <a
|
|
href="CONTRIBUTING.md">Learn how you can help here.</a></p>
|
|
|
|
<p>It is generally safe and recommended to use the master branch.</p>
|
|
|
|
<h2 id="label-Installation">Installation</h2>
|
|
|
|
<p>Add this line to your application's Gemfile:</p>
|
|
|
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_gem'>gem</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>active_model_serializers</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>~> 0.10.0</span><span class='tstring_end'>'</span></span>
|
|
</code></pre>
|
|
|
|
<p>And then execute:</p>
|
|
|
|
<pre class="code ruby"><code class="ruby">$ bundle</code></pre>
|
|
|
|
<h2 id="label-Getting+Started">Getting Started</h2>
|
|
|
|
<p>See <a href="docs/general/getting_started.md">Getting Started</a> for the
|
|
nuts and bolts.</p>
|
|
|
|
<p>More information is available in the <a href="docs">Guides</a> and <a
|
|
href="README.md#high-level-behavior">High-level behavior</a>.</p>
|
|
|
|
<h2 id="label-Getting+Help">Getting Help</h2>
|
|
|
|
<p>If you find a bug, please report an <a
|
|
href="https://github.com/rails-api/active_model_serializers/issues/new">Issue</a>
|
|
and see our <a href="CONTRIBUTING.md">contributing guide</a>.</p>
|
|
|
|
<p>If you have a question, please <a
|
|
href="http://stackoverflow.com/questions/tagged/active-model-serializers">post
|
|
to Stack Overflow</a>.</p>
|
|
|
|
<p>If you'd like to chat, we have a <a
|
|
href="http://amserializers.herokuapp.com">community slack</a>.</p>
|
|
|
|
<p>Thanks!</p>
|
|
|
|
<h2 id="label-Documentation">Documentation</h2>
|
|
<ul><li>
|
|
<p><a
|
|
href="https://github.com/rails-api/active_model_serializers/tree/master">0.10
|
|
(master) Documentation</a></p>
|
|
</li><li>
|
|
<p><a
|
|
href="http://www.rubydoc.info/github/rails-api/active_model_serializers/v0.10.0"><img
|
|
src="http://img.shields.io/badge/yard-docs-blue.svg"></a></p>
|
|
</li><li>
|
|
<p><a href="docs">Guides</a></p>
|
|
</li><li>
|
|
<p><a
|
|
href="https://github.com/rails-api/active_model_serializers/tree/0-9-stable">0.9
|
|
(0-9-stable) Documentation</a></p>
|
|
</li><li>
|
|
<p><a
|
|
href="http://www.rubydoc.info/github/rails-api/active_model_serializers/0-9-stable"><img
|
|
src="http://img.shields.io/badge/yard-docs-blue.svg"></a></p>
|
|
</li><li>
|
|
<p><a
|
|
href="https://github.com/rails-api/active_model_serializers/tree/0-8-stable">0.8
|
|
(0-8-stable) Documentation</a></p>
|
|
</li><li>
|
|
<p><a
|
|
href="http://www.rubydoc.info/github/rails-api/active_model_serializers/0-8-stable"><img
|
|
src="http://img.shields.io/badge/yard-docs-blue.svg"></a></p>
|
|
</li></ul>
|
|
|
|
<h2 id="label-High-level+behavior">High-level behavior</h2>
|
|
|
|
<p>Choose an adapter from <a
|
|
href="lib/active_model_serializers/adapter">adapters</a>:</p>
|
|
|
|
<pre class="code ruby"><code class="ruby"><span class='const'>ActiveModelSerializers</span><span class='period'>.</span><span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_adapter'>adapter</span> <span class='op'>=</span> <span class='symbol'>:json_api</span> <span class='comment'># Default: `:attributes`
|
|
</span></code></pre>
|
|
|
|
<p>Given a <a href="lib/active_model/serializer/lint.rb">serializable
|
|
model</a>:</p>
|
|
|
|
<pre class="code ruby"><code class="ruby"><span class='comment'># either
|
|
</span><span class='kw'>class</span> <span class='const'>SomeResource</span> <span class='op'><</span> <span class='const'>ActiveRecord</span><span class='op'>::</span><span class='const'>Base</span>
|
|
<span class='comment'># columns: title, body
|
|
</span><span class='kw'>end</span>
|
|
<span class='comment'># or
|
|
</span><span class='kw'>class</span> <span class='const'>SomeResource</span> <span class='op'><</span> <span class='const'>ActiveModelSerializers</span><span class='op'>::</span><span class='const'>Model</span>
|
|
<span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:title</span><span class='comma'>,</span> <span class='symbol'>:body</span>
|
|
<span class='kw'>end</span>
|
|
</code></pre>
|
|
|
|
<p>And initialized as:</p>
|
|
|
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_resource'>resource</span> <span class='op'>=</span> <span class='const'>SomeResource</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>title:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ActiveModelSerializers</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>body:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Convention over configuration</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
|
</code></pre>
|
|
|
|
<p>Given a serializer for the serializable model:</p>
|
|
|
|
<pre class="code ruby"><code class="ruby"><span class='kw'>class</span> <span class='const'>SomeSerializer</span> <span class='op'><</span> <span class='const'>ActiveModel</span><span class='op'>::</span><span class='const'>Serializer</span>
|
|
<span class='id identifier rubyid_attribute'>attribute</span> <span class='symbol'>:title</span><span class='comma'>,</span> <span class='label'>key:</span> <span class='symbol'>:name</span>
|
|
<span class='id identifier rubyid_attributes'>attributes</span> <span class='symbol'>:body</span>
|
|
<span class='kw'>end</span>
|
|
</code></pre>
|
|
|
|
<p>The model can be serialized as:</p>
|
|
|
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
|
<span class='id identifier rubyid_serialization'>serialization</span> <span class='op'>=</span> <span class='const'>ActiveModelSerializers</span><span class='op'>::</span><span class='const'>SerializableResource</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_resource'>resource</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_serialization'>serialization</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span>
|
|
<span class='id identifier rubyid_serialization'>serialization</span><span class='period'>.</span><span class='id identifier rubyid_as_json'>as_json</span>
|
|
</code></pre>
|
|
|
|
<p>SerializableResource delegates to the adapter, which it builds as:</p>
|
|
|
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_adapter_options'>adapter_options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
|
<span class='id identifier rubyid_adapter'>adapter</span> <span class='op'>=</span> <span class='const'>ActiveModelSerializers</span><span class='op'>::</span><span class='const'>Adapter</span><span class='period'>.</span><span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_serializer'>serializer</span><span class='comma'>,</span> <span class='id identifier rubyid_adapter_options'>adapter_options</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_adapter'>adapter</span><span class='period'>.</span><span class='id identifier rubyid_to_json'>to_json</span>
|
|
<span class='id identifier rubyid_adapter'>adapter</span><span class='period'>.</span><span class='id identifier rubyid_as_json'>as_json</span>
|
|
<span class='id identifier rubyid_adapter'>adapter</span><span class='period'>.</span><span class='id identifier rubyid_serializable_hash'>serializable_hash</span>
|
|
</code></pre>
|
|
|
|
<p>The adapter formats the serializer's attributes and associations
|
|
(a.k.a. includes):</p>
|
|
|
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_serializer_options'>serializer_options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
|
|
<span class='id identifier rubyid_serializer'>serializer</span> <span class='op'>=</span> <span class='const'>SomeSerializer</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_resource'>resource</span><span class='comma'>,</span> <span class='id identifier rubyid_serializer_options'>serializer_options</span><span class='rparen'>)</span>
|
|
<span class='id identifier rubyid_serializer'>serializer</span><span class='period'>.</span><span class='id identifier rubyid_attributes'>attributes</span>
|
|
<span class='id identifier rubyid_serializer'>serializer</span><span class='period'>.</span><span class='id identifier rubyid_associations'>associations</span>
|
|
</code></pre>
|
|
|
|
<p>See <a href="docs/ARCHITECTURE.md">ARCHITECTURE.md</a> for more
|
|
information.</p>
|
|
|
|
<h2 id="label-Contributing">Contributing</h2>
|
|
|
|
<p>See <a href="CONTRIBUTING.md">CONTRIBUTING.md</a></p>
|
|
</div></div>
|
|
|
|
<div id="footer">
|
|
Generated on Thu Jun 16 09:05:02 2016 by
|
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
0.8.7.6 (ruby-2.2.4).
|
|
</div>
|
|
|
|
</body>
|
|
</html> |