Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

Model JSON

This extension allows you to define JSON hashes for ActiveRecord models allowing you to easily convert your models into JSON for API or Javascript consumption.

Installation

As normal, just pop the following into your Gemfile and restart your webserver.

gem 'nifty-model-json', '~> 1.0.0', :require => 'nifty/model_json'

Configiruation

To configure your models, just use the json method as shown in the example below.

class Person < ActiveRecord::Base
  
  # Some relationships to demonstrate how things work through relationships.
  belongs_to :parent
  has_many :children, :class_name => 'Parent', :foreign_key => 'parent_id'
  
  # Return the user's full name
  def full_name
    "#{first_name} #{last_name}"
  end
  
  # Define multiple attributes to expose. These can either be attributes or
  # methods on the model.
  json :first_name, :last_name, :full_name
  
  # Specify a different name for a method or attribute
  json :age_in_years, :as => :age
  
  # Specify attributes within a group
  json :address_line1, :group => :address, :as => :line1
  json :address_line2, :group => :address, :as => :line2
  
  # Use `with_options` to avoid repeating yourself
  with_options :group => :address do |p|
    p.json :address_line3, :as => :line3
    p.json :address_line4, :as => :line4
    p.json :address_line5, :as => :line5
  end
  
  # Specify conditionals based on the contents of the model
  json :eye_colour, :if => proc { |person| person.age >= 18 }
  
  # Specify conditions based on the values passed when the JSON has
  # is generated
  json :ssn, :if => proc { |person, opts| opts[:user].is_admin? }
  
  # As well as attributes and methods, you can specify relationships. 
  # In the case of belongs_to relationships a hash will be and for 
  # has_many you will have an array of hashes.
  json :parent
  json :children
  
end

Calling

In order to access the JSON, you can use the following methods on the model itself.

person = Person.first
person.to_nifty_json_hash       #=> Returns the full hash as a Ruby hash
person.to_nifty_json            #=> Returns the JSON string for the hash

You can pass a hash to both these methods which will be passed to any :if condition which you may have specified.

About

A Rails extension for creating JSON hashes for Active Record classes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages