首页 > 解决方案 > fast_jsonapi 仅返回第一个包含的元素

问题描述

我正在使用 fast_jsonapi gem 来提供响应前端。我有 2 个模型:

class Store < ApplicationRecord
  has_many :opening_hours
end

class OpeningHour < ApplicationRecord
  belongs_to :store
end

我是 StoreController#new,我只想构建一个新的 Store + 7 个“opening_hours”子级,并发送相应的 JSON:

def new
  store = Brand.find(params[:brand_id]).stores.new()
  [1,2,3,4,5,6,7].map{ |i| store.opening_hours.new(weekday: i) }
  
  render json: StoreSerializer.new(store, options).serializable_hash
end

private
  def options
    @options ||= {include: %i[opening_hours]}
  end

这是我的序列化程序:

class StoreSerializer
  include FastJsonapi::ObjectSerializer
  attributes :name, :brand_id, :formatted_address, :address_street_number, :address_line1, :address_line2, :address_zip, :address_city, :address_country, :phone, :internal_code

  has_many :opening_hours
end

问题是:在生成的 JSON 中,我只得到第一个“opening_hours”元素: 在此处输入图像描述

而我肯定有 7 个孩子在关系 > 开放时间 > 数据中。

标签: ruby-on-railsjson

解决方案


推荐阅读