我有三个模型
User
has_many :articles
Article
has_many :daily_view_metrics
& belongs_to :user
DailyViewMetric
belongs_to :article
我希望每个用户都能大致了解其文章的指标。目前,我在用户控制器的show
操作中传递@user = User.find(params[:id])
以打开特定用户的显示页面。我还传入@articles = Article.where(user_id: params[:id]).load
,以便将可用文章限制为仅用户的文章。
由于DailyViewMetric
模型多次(在不同日期)具有相同的文章,因此我需要将它们聚合到一个新的数组数组中。 即我需要
article_id date views
1 feb-01 20
1 feb-02 50
2 feb-01 30
返回为 [[1,70],[2,30]],以便我可以根据用户的意愿对其进行排序。我该怎么做?是否在DailyViewMetric
模型中创建命名范围?还是在user_helper.rb
?
如果我能有一些我可以newArray.each do |a|
运行的东西,用<%= a.article_id %>
和<%= sumviews %>
等东西做一个表格,这样我就可以在user_id中传递一些东西,那就太好了,所以聚合仅限于他/她的文章
您应该能够通过以下方式执行此操作
长格式:
views_array = []
@articles.each do |a|
a.views do |v|
views_array << [a.id, v.date, v.count]
end
end
简写形式:
@articles.collect {|a| a.daily_view_metrics.collect {|dv| [a.id, dv.date, dv.count] } }