0

我使用 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

在控制器中:

@item_facets = ThinkingSphinx.facets( options[:search],
                                      :classes => [Product, Article],
                                      :include => [:user, :photo])
@items = @items_facets.for

是否有可能以某种方式使用急切加载:variants

4

1 回答 1

0

这有点难看,但它有效:

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

有更好的解决方案吗?

于 2010-10-15T21:13:59.170 回答