gpt4 book ai didi

ruby-on-rails - 如何在给定值内按关联模型排序?

转载 作者:行者123 更新时间:2023-12-05 00:37:47 26 4
gpt4 key购买 nike

我有模型项目和模型统计数据。

 Item
has_many :stats

Stat
belongs_to :items

在模型(例如 mysql 表)Stat 中有 3 个字段:
评分
skin_id
item_id

所以对于 Stat,它可能是,比如:
@item.stats => Array of stats for records with item_id = 1, with a differer skin_id

对于给定的 skin_id,我需要按“评级”对所有项目进行排序。

就像是:
@items = Item.all.order('stats[currtnt_skin.id] DESC') (of course it doesn't work)

换句话说,我需要在以下数组中排序:
@stats = @items.stats[current_skin.id]
@items.order (... by @stats ...)

怎么做?

最佳答案

首先我假设 belongs_to :items你是说 belongs_to :item (单数)鉴于 item_id 的存在外键。

其次,要解决您的特定查询,您可以使用:

Stat.where(:skin_id => skin_id).joins(:item).order("items.rating DESC")

但是,如果 skin_id指的是另一个模型 - 即 Stat belongs_to :skinSkin has_many :stats那么从那里开始可能更有意义:
skin = Skin.find(1)
stats = skin.stats.order("rating DESC").includes(:item)

要获取项目,只需循环遍历它们:
stats = skin.stats.order("rating DESC").includes(:item)

stats.each do |stat|
stat.item
end

F

关于ruby-on-rails - 如何在给定值内按关联模型排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6534739/

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