Including methods and associations in a JSON Data set with Rails
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.
Great Tutorial man, i like it.
can u post sample tutorial using both extjs and rails like sending data to extjs vice-versa.
Thanks Randy this tutorial was helpful for me.
Thanks,
This tutorial was helpful for me too.
Thanks! you saved my mind, i was doing the same by hand and it was fool!