[英]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.