

railsでapiを作っているのですが自分がやりたいような設計にできないので質問させていただきます。Itemモデルのliking_users（Itemをお気に入りしているユーザー）を含めた状態でTagモデルの中のItemモデルを複数取得したいです。最終的には下記のように取得したいです。

[code]

    { tags: [
        {  "id": 1,
           "name": Mens,
           "items": [
              {
                 "id": 1,
                 "name": shirts,
                 "liking_users": [
                        {
                           "id": 1,
                           "name": Tom
                         },
                         { 
                           "id": 2,
                           "name": Steve
                         }
                  ]
               }
            ]
         }
       ]
    }
    
[/code]

現状のコードは、

models/tag.rb

[code]

    class Tag < ActiveRecord::Base
      has_many :items  
    end
    
[/code]

models/item.rb

[code]

    class Item < ActiveRecord::Base
       has_many :likes, dependent: :destroy
       has_many :liking_users, through: :likes, source: :user
    end
    
[/code]

models/user.rb

[code]

    class User < ActiveRecord::Base
       has_many :likes, dependent: :destroy
       has_many :like_items, through: :likes, source: :item
    end
    
[/code]

models/like.rb

[code]

    class Like < ActiveRecord::Base
       belongs_to :item
       belongs_to :user
    end
    
[/code]

app/apis/api/v1/tags.rb

[code]

    module API
      module V1
        class Tags < Grape::API
          resource :tags do
    
      　　   desc 'GET /api/v1/tags/:id'
      　　　  params do
         　　　 requires :id, type: Integer, desc: "Tag id."
        　　　end
       　　　 get '/:id' do
        　  　　tag = Tag.find(params[:id])
         　　　 @tag = tag.items.  #この行をどう書けばいいかわからないです、、
        　　　end
          end
        end
      end
    end
    
[/code]

もしよければ、どなたか回答して頂けないでしょうか。宜しくお願いします。


CC BY-SA 3.0
2016-04-29T13:53:43.667
24456
2017-04-24T05:52:12.067
2016-04-30T05:11:02.480
12374
12374
question
ruby-on-rails ruby api
Itemモデルにliking_userを含めた状態で取得する方法


スミマセン。Grape を使っていることに後から気付きました。  
Grape のやり方はわからないので、別の方の回答を期待してくださいませ。

Rails なら分かるので、ヒントだけでもと思い、投稿します。  
ご参考になれば幸いです。

[code]

    [3] pry(main)> tag.as_json(root: true, include: { items: { include: :liking_users }})
    {
        "tag" => {
               "id" => 1,
             "name" => "Men",
            "items" => [
                [0] {
                              "id" => 1,
                          "tag_id" => 1,
                            "name" => "shirts",
                    "liking_users" => [
                        [0] {
                              "id" => 1,
                            "name" => "Tom"
                        },
                        [1] {
                              "id" => 2,
                            "name" => "Steve"
                        }
                    ]
                }
            ]
        }
    }
    
[/code]


CC BY-SA 3.0
2016-04-30T12:13:09.243
24478
2016-04-30T12:13:09.243
7471
24456
answer