想要按类别获得所有用户的产品,包括没有产品的类别

时间:2018-01-14 08:31:36

标签: ruby-on-rails json activerecord ruby-on-rails-5

我有两个模型 - 父母和孩子,以及父母has_many孩子,我有一系列父母,并希望为所有父母(包括没有孩子的父母)检索所有孩子。 Parent将呈现as_json并发送给react组件。

使用current_user产品获取所有类别的最简洁方法是什么,包括没有与之相关的产品的类别?

我想这样看:

组别

  • 产品1
  • 产品2

类别2

  • 产品1
  • 产品2

类别3

  • (空)

我已经尝试

@categories = Category.includes(:products).where(products: { user_id: current_user.id }) 
@categories.as_json(include: :products)

#Category that has no product is not included

模型

class Product < ApplicationRecord
  belongs_to :user
  belongs_to :category
end

class Category < ApplicationRecord
  has_many :products
end

1 个答案:

答案 0 :(得分:1)

您可以覆盖as_json方法

Category.includes(:products).as_json(user_id: current_user.id)

## model/category.rb
def as_json(options = {})
  json = serializable_hash(options)
  json['products'] = products.where(user_id: options[:user_id]).as_json
  json
end