0

imbriquées j'ai deux modèles simples:Rails 5 - comprennent des associations qui ne travaillent pas

  1. note.rb

avec

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

  1. tag.rb

avec

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

Les deux modèles sont reliés par rapport has_and_belongs_to_many. La table d'association est appelée tags_notes comme indiqué ci-dessus. Eh bien, le problème que j'ai ici, dans mon contrôleur RESTful, pour obtenir des notes, j'ai ceci:

GET /api/notes Cela ne renvoie des objets:

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

Cependant, chaque note a tags, et je voudrais jeter ceux dans la réponse aussi bien, comme ceci:

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

     }, 
     ... 
    ] 

dans mon contrôleur, j'ai essayé Note.includes(:tags).

Code contrôleur actuel: def index notes = Note.includes(:tags) render json: notes, status: :ok end

Ils ne semblent revenir notes, sans tags. C'est le cas avec Note.eager_load(:tags) Qu'est-ce que je fais mal? Je ne trouve pas assez de documentation pour m'aider à résoudre ce problème. Si quelqu'un peut m'aider avec cela, je serai reconnaissant.

Merci beaucoup.

Répondre

2

Peu de temps après avoir posté ma question, j'ai trouvé moi-même la réponse. Le include doit aller dans render.

Ainsi, le code contrôleur

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

semble faire l'affaire!