我有一个取回的事件列表。 我试图包括与此事件相关的每个用户以及与每个用户相关的每个配置文件。用户被包括在内,但不包括他们的个人资料。
我该怎么做
Event.includes(:users [{profile:}])
医生似乎不太清楚: http://guides.rubyonrails.org/active_record_querying.html
我有一个取回的事件列表。 我试图包括与此事件相关的每个用户以及与每个用户相关的每个配置文件。用户被包括在内,但不包括他们的个人资料。
我该怎么做
Event.includes(:users [{profile:}])
医生似乎不太清楚: http://guides.rubyonrails.org/active_record_querying.html
我相信下面的方法对你有用。
Event.includes(users: :profile)
如果你想要包含一个已经包含的关联(我们称之为B)的关联(我们称之为C),你可以使用上面的语法。然而,如果你也想包括D,它也是B的一个关联,这时你就可以使用Rails指南中示例中给出的数组。
A.includes(bees: [
:cees,
:dees
])
您可以像这样继续嵌套包含(如果确实需要的话)。假设A也与Z相关,C与E和F相关。
A.includes({
bees: [{
cees: [:ees, :effs]
}, :dees]
}, :zees)
为了好玩,我们还说E与J和X相关,D与Y相关。
A.includes({
bees: [{
cees: [{
ees: [:jays, :exes]
}, :effs]
},
{
dees: :wise
}
]
}, :zees)
如果有人正在做一个respond_to块来生成嵌套的json,你可以这样做:
respond_to do |f|
f.json do
render json: event.to_json(include: {users: {include: :profile} }), status: :ok
end
end
请参考乔·肯尼迪的解决方案。
下面是一个可读性更好的示例(供以后的我使用)。
includes(
:product,
:package, {
campaign: [
:external_records,
{ account: [:external_records] },
{ agency: [:external_records] },
:owner,
:partner,
]
}
)