Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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
Ruby on rails 从特定起始值排序activerecord关系_Ruby On Rails - Fatal编程技术网

Ruby on rails 从特定起始值排序activerecord关系

Ruby on rails 从特定起始值排序activerecord关系,ruby-on-rails,Ruby On Rails,假设我有一个photo\u id34 此照片是特定摄影师资产的一部分当前摄影师。照片。所有:1、23、24、34、78 如何获得关系当前\u摄影师照片。所有结果从提供的特定照片ID开始=>34、78、1、23、24 编辑:我想保持照片的一般顺序。每张照片前面都有先前创建的照片。(这是用于照片传送带)您可以创建两个结果集,一个用于>=34,另一个用于=34,另一个用于

假设我有一个
photo\u id
34

此照片是特定摄影师资产的一部分
当前摄影师。照片。所有
:1、23、24、34、78

如何获得关系
当前\u摄影师照片。所有
结果从提供的特定照片ID开始=>34、78、1、23、24


编辑:我想保持照片的一般顺序。每张照片前面都有先前创建的照片。(这是用于照片传送带)

您可以创建两个结果集,一个用于>=34,另一个用于<34,然后将它们合并

当前摄影师。照片。其中('id>=?',34)+当前摄影师。照片。其中('id<?',34)

这些可能是作用域:

scope :above_id, ->(id) { where('id >= ?', id) }
scope :below_id, ->(id) { where('id < ?', id) }

您可以创建两个结果集,一个用于>=34,另一个用于<34,然后将它们合并

当前摄影师。照片。其中('id>=?',34)+当前摄影师。照片。其中('id<?',34)

这些可能是作用域:

scope :above_id, ->(id) { where('id >= ?', id) }
scope :below_id, ->(id) { where('id < ?', id) }

我认为您最好在应用程序领域实现。我真的不知道如何在数据库级别以有意义的方式完成它

您可以按原始顺序获取记录,然后操纵结果

current_photographer.photos.partition {|photo| photo.id < 34 }.reverse.flatten
current_摄影师.photos.partition{| photo | photo.id<34}.reverse.flatten

我认为您最好在应用程序领域实现。我真的不知道如何在数据库级别以有意义的方式完成它

您可以按原始顺序获取记录,然后操纵结果

current_photographer.photos.partition {|photo| photo.id < 34 }.reverse.flatten
current_摄影师.photos.partition{| photo | photo.id<34}.reverse.flatten

我专注于通过一个查询找到解决方案。。但你的解决方案确实起到了作用。thanksI专注于通过单个查询找到解决方案。。但你的解决方案确实起到了作用。非常感谢你。您的解决方案可以在单个查询中运行。我已经接受了另一个答案,但你的答案稍微干净一点。操作单个查询是一个不错的选择。非常感谢。您的解决方案可以在单个查询中运行。我已经接受了另一个答案,但你的答案稍微干净一点。操作单个查询是一种方法。