0

我已经使用 roo 解析了一个 .xls 文件并将数据存储在关系数据库中。现在我想再次显示这些行,就像之前在 .xls 中一样。也就是说,我必须加入 3 个表。我如何在 Rails 中使用活动记录方法做到这一点?

假设我有 3 个表CategorySubcategoryItem。我需要显示这 3 个表中的信息。我在我的模型中做了类似的事情:category has_many subcategory和一个subcategory has_many items(当然是相应belongs_to的)。我将如何在每个中进行迭代并以活动记录的方式category获取subcategory和?items

4

2 回答 2

0
categories= Category.all

sub_categories = categories.collect{|category| category.subcategories }.compact

items = sub_categories.collect{|sub_cat| sub_cat.items}.compact

像这样的东西应该工作

于 2013-05-04T02:58:51.353 回答
0

要使用活动记录检索类别、子类别和项目:

@categories = Category.includes(:subcategories => :items)

这将急切加载关联,并避免 N+1 选择问题。

然后你可以像往常一样迭代它们,使用each

@categories.each do |c|
  c.subcategories.each do |s|
    s.items.each do |i|
      # do something with item i
    end
  end
end
于 2013-05-04T02:58:53.323 回答