Ruby on rails 在Rails中连接表

Ruby on rails 在Rails中连接表,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我使用roo解析了一个.xls文件,并将数据存储在关系数据库中。现在我想再次显示这些行,就像以前在.xls中一样。也就是说,我必须连接3个表。如何使用活动记录方法在Rails中实现这一点 假设我有3个表:Category,Subcategory和Item。我需要显示这3个表中的信息。我在我的模型中做过类似的事情:类别有很多子类别,而子类别有很多项目(当然,相应的属于)。如何迭代每个类别,并以活动记录方式获取子类别和项 categories= Category.all sub_categorie

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

假设我有3个表:
Category
Subcategory
Item
。我需要显示这3个表中的信息。我在我的模型中做过类似的事情:
类别有很多子类别
,而
子类别有很多项目
(当然,相应的
属于
)。如何迭代每个
类别
,并以活动记录方式获取
子类别

categories= Category.all

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

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

类似的操作应该可以使用active record检索类别、子类别和项目:

@categories = Category.includes(:subcategories => :items)
这将立即加载关联,并避免N+1选择问题

然后,您可以像往常一样使用
每个
对它们进行迭代:

@categories.each do |c|
  c.subcategories.each do |s|
    s.items.each do |i|
      # do something with item i
    end
  end
end
你可以用。