我使用roo解析了一个.xls文件,并将数据存储在关系数据库中。现在我想再次显示这些行,就像之前的.xls一样。也就是说,我必须加入3个表。如何使用活动记录方法在Rails中执行此操作?
假设我有3个表:Category
,Subcategory
和Item
。我需要显示这3个表中的信息。我在模型中做过类似的事情:category has_many subcategory
和subcategory has_many items
(当然还有相应的belongs_to
)。如何迭代每个category
并以活动记录方式获取subcategory
和items
?
答案 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