级联关系模型 Ruby on Rails



我有三个模型

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] } }

最新更新