如何在Rails索引视图中访问复杂数据(如子数据)?

时间:2013-09-22 02:35:28

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

我正在开发一个Rails应用程序,它将显示食物的营养成分。我想只显示用户想要看到的营养素。

所以,我有模特:

  • 食物:
  • 养分:
  • FoodNutrient:指定每种食物中每种营养素的含量
  • UserNutrient:指定用户想要查看的营养素 我将有数以千计的食物和超过100种营养素

我看到几个来源提供了如何处理这种复杂性的提示(现在我正在考虑尝试使用Arel)。但是,这些来源通常不会提供示例,也不会提示我们应该如何在视图上处理此问题。我找到了this one,但我会更喜欢这个问题,特别是涉及的大数据。

那么,在我的索引视图中处理这个问题的最佳方法是什么?

我的另一个疑问是,如果使用FoodNutrient模型对性能更好,或者最好在Food模型中包含每个新列代表营养素的列。我认为FoodNutrient赌注更好,因为用户会选择他会看到哪些营养素,但我不确定。
我将不胜感激任何可能对我有帮助的例子,解释,建议,反馈或参考。

被修改

由于有些人的评论不理解我的问题,我会试着总结一下。

我想从前3个模型中获取数据,最后一个(UserNutrient)用于减少向用户显示的行数。

因为我想展示类似的东西:

Food Name  |  Nutrient 1  |  Nutrient 2  |  Nutrient 3
_______________________________________________________
Food 1        10             40             7.3
Food 2        9              4.4            9.1

据我所知,我会在Food上有一个循环,它会迭代上面显示的每一行。而且我还必须在第一个循环内迭代UserNutrient以显示每种食物上的营养素数量(此数据在UserNutrient上)。主要问题是如何进行这些循环,特别是考虑到表格将包含大量数据。 This one似乎有点类似,虽然我不太了解。

我怀疑的是结构是否最好。 FoodNutrient和Food表可以合并。

1 个答案:

答案 0 :(得分:0)

我已经研究过这个问题,现在我决定将FoodNutrient和Food表/模型合并为Food。 我相信有很多行的FoodNutrient会更糟糕,因为它会有一个巨大的索引。比有很多列的食物表更糟糕。

这篇文章帮助我决定:

http://rails-bestpractices.com/posts/58-select-specific-fields-for-performance

如果您有需要添加的内容,请回答问题或添加评论。