在Rails中连接表

时间:2013-05-04 02:51:46

标签: ruby-on-rails ruby-on-rails-3

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

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

2 个答案:

答案 0 :(得分:0)

categories= Category.all

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

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

这样的事情应该起作用

答案 1 :(得分: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