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

标签 ruby-on-rails sorting activerecord associations

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

 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/

相关文章:

ruby-on-rails - 如何在设计生成的注册表中添加一个额外的字段?

ruby-on-rails - 如何将 slim 用于邮件文本模板

ruby - 如何为哈希创建自定义 "merge"方法?

jQuery 根据#ID 排列 li 顺序

ruby-on-rails - Rails 数据库特定的数据类型

ruby-on-rails - 如何将字符串拆分为二维数组并将运算符应用于 Rails 3.2 中的数组元素?

ruby-on-rails - 具有特征和动态变量的 Factory Girl create_list

shell - 从日志中排序唯一的 url

ruby-on-rails - 如何恢复/撤消对 Activerecord 对象的本地更改?

ruby-on-rails - Rails 和 Postgres : Finding items that are a "good deal"