gpt4 book ai didi

ruby-on-rails - 活跃管理员按二级协会排序

转载 作者:数据小太阳 更新时间:2023-10-29 08:11:46 24 4
gpt4 key购买 nike

我有三个模型。 makesmodels 表中都有 name 列。

class Review < ActiveRecord::Base
belongs_to :model
end

class Model < ActiveRecord::Base
belongs_to :make
has_many :reviews
end

class Make < ActiveRecord::Base
has_many :models
end

在索引页面的 Active Admin 中,我想按品牌和型号对评论进行排序。我想出了如何按型号​​对其进行排序,因为它具有 reviews 表的键。尝试了很多东西。按品牌名称排序没有任何效果。虽然我能够列出。

ActiveAdmin.register Review do
column "Model", sortable: 'model_id' do |p|
p.model.name
end
column "Make", sortable: 'make_id' do |review|
review.model.make.name
end
end

只能按型号名称排序。我认为如果我将 make_id 添加到 Reviews 它将起作用,但它似乎是多余的,导致像 review.model.make 这样的链完美地起作用

最佳答案

假设 review 是 1 到 5 之间的分数。您必须计算每个 make 的平均值。

要计算品牌的平均值,请执行以下操作:

reviews_sum = 0
total_reviews = 0

make.models.each do |model|
model.reviews.each do |review|
reviews_sum += review
total_reviews += 1
end
end

然后:

average_review = reviews_sum /  total_reviews.to_f # I am using to_f to convert total_reviews from integer to float. This way you can have a float result.

我建议你创建一个make_average_review(make_id, average_review)通过这种方式,您可以存储/更新每个 make 的平均评论,然后按 make

排序

关于ruby-on-rails - 活跃管理员按二级协会排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32001040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com