Sasanka Panguluri
Sasanka Panguluri

Reputation: 3128

Rails 5 - include nested associations not working

I have two simple models:

  1. note.rb

with

:title -> string, :content -> string has_and_belongs_to_many :tags, join_table: :tags_notes accepts_nested_attributes_for :tags

  1. tag.rb

with

:name -> string has_and_belongs_to_many :notes, join_table: :tags_notes

Both models are connected through has_and_belongs_to_many relationship. The association table is called tags_notes as indicated above. Well, the problem I have here is, in my RESTful controller, to get notes, I have this:

GET /api/notes This only returns Note objects:

[
    {
        "id": 1,
        "title": "12231",
        "content": "121213"
    },
    {
        "id": 2,
        "title": "test",
        "content": "testtest"
    }
]

However, each note has tags, and I would like to dump those in the response as well, like this:

     [
        {
            "id": 1,
            "title": "12231",
            "content": "121213",
            tags: [
              {
                 "name": "test",
                 "id": 1
              },
              { 
                ...
              } 
            ]

        },
         ...
    ]

In my controller, I've tried Note.includes(:tags).

Current controller code: def index notes = Note.includes(:tags) render json: notes, status: :ok end

They only seem to return notes, without tags. Same is the case with Note.eager_load(:tags) What am I doing wrong? Cannot find enough documentation that will help me fix this issue. If someone can help me with this I will be grateful.

Thanks a bunch.

Upvotes: 0

Views: 518

Answers (1)

Sasanka Panguluri
Sasanka Panguluri

Reputation: 3128

Shortly after posting my question I found the answer myself. The include has to go in render.

So the controller code

  def index
    notes = Note.all
    render json: notes, :include => :tags, status: :ok
  end

Seems to do the trick!

Upvotes: 2

Related Questions