簡體   English   中英

Rails Controller包括在include中

[英]Rails Controller include within include

我有Ruby on Rails API,我想使用所有分配的數據(在多個級別上)呈現一個模型。 我的模型結構如下所示:

class Race < ApplicationRecord
    has_many :efforts, :dependent => :delete_all
end

class Effort < ApplicationRecord
    belongs_to :race
    has_many :segment_efforts, :dependent => :delete_all
end

class SegmentEffort < ApplicationRecord
    belongs_to :effort

因此,當用戶調用/ race / 1時,他應該獲得ID為1的比賽,所有屬於比賽1的努力以及所有屬於所選努力的分段努力。 鐵軌有可能嗎? 我只發現,可以使用:inlude渲染關聯的對象,如下所示:

render json: @race.to_json(:include => [:efforts])

但是,我想知道,是否有可能在工作中加入細分市場的努力,這是否是明智的做法。 還是有更好的方法來加載這些資源?

是的,您可以使用jbuilder構建更健壯的JSON結構來響應查詢。

首先,您要確保您的SQL查詢有效。 如果您使用預先加載,Rails會為您處理:

@race = Race.includes(efforts: :segment_efforts).find(params[:id])

然后您的視圖將如下所示:

# app/views/races/show.json.jbuilder
json.(@race, :name, :foo)
json.efforts(@race.efforts) do |effort|
  json.effort_name effort.name
  json.someother_attr effort.someother_attr
  json.segment_efforts(effort.segment_efforts, :another_attr)
end

一定要檢查一下jbuilder示例,以了解語法的可能性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM