Giter Site home page Giter Site logo

thing-serializer's Introduction

ThingSerializer

GitHub Actions status

A not very clever object serializer.

Example

class CategorySerializer
  include ThingSerializer::Base

  # Let the serializer generate Rails URLs, don't include it if you don't need
  # to generate URLs (but you probably should).
  include Rails.application.routes.url_helpers

  # `attribute` / `attributes` first look for a matching method on the
  # serializer and then its `object`.
  attributes :_embedded, :_links
  attributes :id, :name

  def _embedded
    {
      products: products,
    }
  end

  def _links
    {
      self: {
        href: category_url(object),
      },
    }
  end

  private
    # Access a serializer's `object` to define associations and other
    # non-standard attributes.
    def products
      # Easily map objects to serializers with `.to_proc`.
      object.products.map(&ProductSerializer)
    end
end

class ProductSerializer
  include ThingSerializer::Base
  include Rails.application.routes.url_helpers

  attribute :_links
  attributes :id, :name, :price

  def _links
    {
      self: {
        href: product_url(object),
      },
    }
  end
end

Use a serializer by instantiating it with a relevant object, generate JSON from a Rails controller like so:

class CategoriesController < ApplicationController
  def show
    category = Category.find(params[:id])
    render json: CategorySerializer.new(category)
  end
end

(Assuming the following models:)

class Category < ApplicationRecord
  has_many :products
end

class Product < ApplicationRecord
  belongs_to :category
end

thing-serializer's People

Contributors

benpickles avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.