Including methods and associations in a JSON Data set with Rails 4

Posted by Randy on October 02, 2009

I was poking around while working with creating an application specifically for web services. We decided to use JSON as the methods of transportation of data, but the problem came when I wanted to include custom methods, or associations in my data set. The solution was fairly simple, using the to_json method.

Suppose you have the following classes:

class Client < ActiveRecord::Base
  has_many :employees
end
 
class Employee < ActiveRecord::Base
  belongs_to :client
 
  def full_name
    "#{first_name} #{last_name}"
  end
end

We want the controller to return a client with association employees and the full name in the database. Here is how we would go about doing that:

def show
  @client = Client.find(params[:id])
 
  respond_to do |format|
    format.json { render :json => @client.to_json(
      :include => {
        :employee => {
          :only => :email,
          :methods => [ :full_name ]
        }
      }
    ) }
  end
end

You will end up with the following data set:

{ client: { name: "Some client", employee: { email: "test@test.com", full_name: "John Doe" } } }

Forgive me if I messed up the json output…doing it from memory :) There are of course way easier uses for this too, but I just decided to spit out a more complex one.

Trackbacks

Use this link to trackback from your own site.

Comments

Leave a response

  1. surinapster Sat, 24 Oct 2009 05:24:09 UTC

    Great Tutorial man, i like it.

    can u post sample tutorial using both extjs and rails like sending data to extjs vice-versa.

  2. Kuberan Tue, 24 Apr 2012 05:38:08 UTC

    Thanks Randy this tutorial was helpful for me.

  3. thooams Mon, 28 Jan 2013 11:09:24 UTC

    Thanks,

    This tutorial was helpful for me too.

  4. Luca Mon, 11 Feb 2013 19:25:07 UTC

    Thanks! you saved my mind, i was doing the same by hand and it was fool!

Comments