Ruby on rails 考虑斯芬克斯搜索与两类和渴望加载

Ruby on rails 考虑斯芬克斯搜索与两类和渴望加载,ruby-on-rails,thinking-sphinx,eager-loading,Ruby On Rails,Thinking Sphinx,Eager Loading,我使用TS同时搜索2个模型类: class Product < ActiveRecord::Base belongs_to :user belongs_to :photo has_many :variants end class Article < ActiveRecord::Base belongs_to :user belongs_to :photo end 是否可以对:变体使用即时加载?这有点难看,但它可以工作: ids = @items.select

我使用TS同时搜索2个模型类:

class Product < ActiveRecord::Base
  belongs_to :user
  belongs_to :photo
  has_many :variants
end

class Article < ActiveRecord::Base
  belongs_to :user
  belongs_to :photo
end

是否可以对:变体使用即时加载?

这有点难看,但它可以工作:

ids = @items.select { |item| item.is_a?(Product) }.map(&:variant_id)
variants = {}
Variant.find(ids).each { |v| variants[v.id] = v }
@items.each do |item|
  item.variant = variants[item.variant_id] if item.is_a?(Product)
end
有更好的解决办法吗

ids = @items.select { |item| item.is_a?(Product) }.map(&:variant_id)
variants = {}
Variant.find(ids).each { |v| variants[v.id] = v }
@items.each do |item|
  item.variant = variants[item.variant_id] if item.is_a?(Product)
end