Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Rails-max版本,带分组_Mysql_Ruby On Rails_Ruby_Ruby On Rails 4_Activerecord - Fatal编程技术网

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会有所帮助。获取整件物品听起来很像这样:同时也非常感谢您的帮助!