Rails: include related object in JSON output Rails: include related object in JSON output json json

Rails: include related object in JSON output


I'm not sure the new respond_to/respond_with style is flexible enough to do this. It very well may be, but as far as I understand, it's meant to simplify only the simplest cases.

You can achieve what you are trying to do with the old-style respond_to with a block, however, by passing parameters to to_json. Try something like this:

class NotesController < ApplicationController  def index    @notes = Note.order("created_at desc")    respond_to do |format|      format.json do        render :json => @notes.to_json(:include => { :user => { :only => :username } })      end    end  endend


You can also use Jbuilder(https://github.com/rails/jbuilder) to response with data very flexible.

@notes = Note.includes(:user).order("created_at DESC")

and in your index.json.jbuilder file, you can

json.extract! @notejson.username @note.user.username


Would it be possible to do it the other way around?

def index  @user = User.includes(:notes).order("created_at DESC")  respond_with @userend

It would be expensive to include user objects each time the @notes is iterated.