Itemモデルにliking_userを含めた状態で取得する方法
railsでapiを作っているのですが自分がやりたいような設計にできないので質問させていただきます。Itemモデルのliking_users(Itemをお気に入りしているユーザー)を含めた状態でTagモデルの中のItemモデルを複数取得したいです。最終的には下記のように取得したいです。
{ tags: [
{ "id": 1,
"name": Mens,
"items": [
{
"id": 1,
"name": shirts,
"liking_users": [
{
"id": 1,
"name": Tom
},
{
"id": 2,
"name": Steve
}
]
}
]
}
]
}
現状のコードは、
models/tag.rb
class Tag < ActiveRecord::Base
has_many :items
end
models/item.rb
class Item < ActiveRecord::Base
has_many :likes, dependent: :destroy
has_many :liking_users, through: :likes, source: :user
end
models/user.rb
class User < ActiveRecord::Base
has_many :likes, dependent: :destroy
has_many :like_items, through: :likes, source: :item
end
models/like.rb
class Like < ActiveRecord::Base
belongs_to :item
belongs_to :user
end
app/apis/api/v1/tags.rb
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
もしよければ、どなたか回答して頂けないでしょうか。宜しくお願いします。