Mysql Rails-max版本,带分组
好吧,我一直在寻找答案,但我一直被这个问题困扰着。我正在尝试获取一组项目的最大版本。这就是我的工作,它抓住了所有正确的项目,但没有抓住他们的最新版本Mysql Rails-max版本,带分组,mysql,ruby-on-rails,ruby,ruby-on-rails-4,activerecord,Mysql,Ruby On Rails,Ruby,Ruby On Rails 4,Activerecord,好吧,我一直在寻找答案,但我一直被这个问题困扰着。我正在尝试获取一组项目的最大版本。这就是我的工作,它抓住了所有正确的项目,但没有抓住他们的最新版本 def index @project = Project.find(params[:project_id]) @items = Item.group(:original_id).where(original_id: ItemOriginal.select("id").where(:project_id =>
def index
@project = Project.find(params[:project_id])
@items = Item.group(:original_id).where(original_id: ItemOriginal.select("id").where(:project_id => @project.id))
end
一个项目有许多ItemOriginals,ItemOriginals有许多项
我不确定,但我想你是在问,“给我这个项目的所有项目原件,在每个项目上都包括其最高版本的项目版本。”在这种情况下,这应该可以:
@items = @project.item_originals.select("item_originals.*, (SELECT MAX(version) FROM items i WHERE i.item_original_id = item_originals.id) AS max_version")
然后,您可以在每个项目上获得其max\u版本
:
- @items.each do |item|
= item.max_version
如果您需要整个项目,而不仅仅是版本,您应该切换到Postgres并使用
横向连接:-) 很抱歉,回复太晚了,我会看看我是否能让这个工作。我曾经用数组做过一些工作,但一旦我尝试使用搜索方法搜索ransack gem,它就彻底崩溃了。不幸的是,使用Postgres的选项对我的项目来说是一个否定的选择。有时,在将SQL转换为ActiveRecord之前,先计算SQL会有所帮助。获取整件物品听起来很像这样:同时也非常感谢您的帮助!