Ruby on rails Ruby on Rails上的级联关系模型
我有三种型号Ruby on rails Ruby on Rails上的级联关系模型,ruby-on-rails,ruby,activerecord,ruby-on-rails-4,Ruby On Rails,Ruby,Activerecord,Ruby On Rails 4,我有三种型号 用户有很多:文章 文章有很多:每日查看量和属于:用户 DailyViewMetric属于:文章 我希望每个用户都能对其文章的指标进行概述。此时,我在用户控制器的show操作中传递@user=user.find(params[:id]),以打开特定用户的显示页面。我还传入@articles=Article.where(user_id:params[:id])。加载,以便将可用文章限制为仅包含用户的文章 由于DailyViewMetric模型多次(在不同的日子)出现同一篇文章,因此我需
用户
有很多:文章
文章
有很多:每日查看量
和属于:用户
DailyViewMetric
属于:文章
我希望每个用户都能对其文章的指标进行概述。此时,我在用户控制器的show
操作中传递@user=user.find(params[:id])
,以打开特定用户的显示页面。我还传入@articles=Article.where(user_id:params[:id])。加载,以便将可用文章限制为仅包含用户的文章
由于DailyViewMetric
模型多次(在不同的日子)出现同一篇文章,因此我需要将它们聚合到一个新的数组中。也就是说,我需要
article_id date views
1 feb-01 20
1 feb-02 50
2 feb-01 30
以[[1,70]、[2,30]]的形式返回,以便我可以根据用户的意愿对其进行排序。我该怎么做?是否在DailyViewMetric
模型中创建命名范围?或者在user\u helper.rb
中
如果我可以运行newArray.each do | a |
在我的视图中创建一个包含
和
等内容的表格,那就太好了。。有了一些东西,我可以在用户id中传递,因此聚合仅限于他/她的文章您应该能够通过以下方式进行
长格式:
视图\u数组=[]
@articles.each do |a|
a.views do |v|
views_array << [a.id, v.date, v.count]
end
end
这实际上并没有把它加起来。我仍然得到这样的2d数组[1,feb-01,20],[1,feb-02,50],[2,…]]
这不是你需要的吗?你能粘贴你得到的结果吗。(据我所知,它应该是一个数组数组)是的,它应该是一个数组数组,但是聚合,即查看id
,将所有视图添加到一起,并给出数组的一个元素,即[id,date,sum of of of view]。我需要它来正确排序表格,因为当前如果我按视图排序,它会按一天中具有最高视图的文章排序,而不是按最高总视图数排序。基本上,我想在数据集上运行mapreduce
,你是指计数总和吗?我认为日常视图指标包含在其中。如果daily view metric在一个日期中有许多行,则可以使用reduce[1,2,3].reduce(:+)。这将基本上给你计数。因此,在这种情况下,您需要获得一个计数数组,并对其应用reduce。
@articles.collect {|a| a.daily_view_metrics.collect {|dv| [a.id, dv.date, dv.count] } }