【问题标题】:Selecting only one row from child model based upon the parent model基于父模型从子模型中仅选择一行
【发布时间】:2009-05-13 11:08:59
【问题描述】:

以下是两个模型之间的关联:

class FotoGossip < ActiveRecord::Base
   has_many :uploads
end

class Upload < ActiveRecord::Base
   belongs_to :foto_gossip
end

@latest_uploads = Upload.all(:include => :foto_gossip, :order => "created_at DESC", :limit => 5)  

它显示上传模型的最新 5 张照片。
但是,我想显示来自 Uploads 的 5 张图片,order_by created_date DESC 但每个 FotoGossip 只显示 1 张图片。
它类似于将最近的 FotoGossip 与其来自 Uploads 模型的一张照片组合在一起。

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    我认为你可以使用ActiveRecord::Base#calculate 像在

    @latest = Update.maximun(:creted_at,:distinct=>:foto_gossip_id)
    

    【讨论】:

    • 嗯,谢谢你的回复!但它并没有像我预期的那样工作,我按照我发布的答案按照自己的方式行事。
    【解决方案2】:

    以下 AR 查询解决了它。

    @latest_uploads = Upload.all(:include => :foto_gossip, :order => "created_at DESC", :limit => 5, :group => :foto_gossip_id)
    

    神奇之处在于 :group 选项。

    【讨论】:

      猜你喜欢
      • 2018-04-15
      • 2016-05-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多