2016-04-26 76 views
0

我通过外连接和呈现json创建了活动记录。当我渲染这个我没有得到外部连接的表数据。如何获取它如何将记录列为外连接活动记录的json

@recent_details = Property 
    .includes(:space_amenities,:event_suitabilities,:purpose_suitabilities,:venue_categories) 
    .where(id: params[:id]) 
render json: @recent_details 

我这是怎么呈现index.jbuiler.json形式

json.recent_details @recent_details 

在这里,我得到了属性表,除了外的所有细节连接表。如何获得外部连接表结果

+0

是外部联接 – SreRoR

+0

尝试渲染JSON:Property.includes(:space_amenities,:event_suitabilities,:purpose_suitabilities,:venue_categories)。凡(ID:PARAMS [:编号])。to_json –

+0

我试着像这个。但是这一次我得到属性细节加上只有一个连接表细节,这是最后一个(purpose_suitabilities)。任何想法如何添加所有 – SreRoR

回答

0

您需要调用类似@recent_details.frist.space_amenities的数据才能获取数据,includes实际上会为您查询数据,但它不会将所有数据合并到一起。只是当您拨打@recent_details.first.space_amenities时,数据库将不会再次查询,因为includes已经为您查询。在你的情况下,你需要指定你想添加到你的json结果的列。例如:

json.recent_details @recent_details do |rd| 
    json.space_amenities rd.space_amenities 
end 

这不会有N + 1查询问题

如果剔除includes(:space_amenities,:event_suitabilities,:purpose_suitabilities,:venue_categories),同样的代码将有N + 1查询的问题,你会在你的服务器日志将多个SQL看查询中用于每种recent_detail