我有一个User
model,User
有几个 associated 的 model,然后通过 User,我把几个 model 合在一起,如下
tables = [:a, :b, :c, :d]
result = tables.map do |t|
@user.send(t)
end.flatten
但我要的不仅仅是 model,而是特定的资料,例如说
class A
def data
{
name: name,
age: age
}
end
end
class B
def data
{
name: name,
height: height
}
end
end
然后查询会是这样
tables = [:a, :b, :c, :d]
result = tables.map do |t|
@user.send(t).map {|d| d.data}
end.flatten
A
和B
都有 data,但内容不完全一样,
这样的话,如果我做的是一个庞大的查询的话,要每个 model 轮流去算这个 data(data 可能需要计算,不是单纯的属性),整个查询就会非常慢。
想请问有什么办法优化吗?例如把 data 存进资料库?