相关疑难解决方法(0)

ActiveRecord.find(array_of_ids),保留顺序

当你Something.find(array_of_ids)在Rails中,所得到的数组的顺序不依赖的顺序array_of_ids.

有没有办法找到并保存订单?

ATM我根据ID的顺序手动对记录进行排序,但这有点蹩脚.

UPD:如果可以使用:orderparam和某种SQL子句指定顺序,那么如何?

ruby activerecord ruby-on-rails

93
推荐指数
8
解决办法
4万
查看次数

在Postgresql中模拟MySQL的ORDER BY FIELD()

刚刚试用PostgreSQL,来自MySQL.在我们的Rails应用程序中,我们有几个带SQL的位置,如下所示:

SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC
Run Code Online (Sandbox Code Playgroud)

没过多久就发现PostgreSQL不支持/允许这样做.

有谁知道如何在PostgreSQL中模拟这种行为,还是我们必须将整理到代码中?

mysql postgresql

42
推荐指数
6
解决办法
2万
查看次数

清洁方式按指定的顺序按ID查找ActiveRecord对象

我想获得一个给定一组id的ActiveRecord对象数组.

我认为

Object.find([5,2,3])
Run Code Online (Sandbox Code Playgroud)

将返回一个数组,其中包含对象5,对象2,然后按顺序返回对象3,但我得到的数组按对象2,对象3和对象5排序.

ActiveRecord Base 查找方法API提到您不应该按照提供的顺序期望它(其他文档不提供此警告).

一个可能的解决方案是按相同顺序的ID数组查找的?,但订单选项似乎对SQLite无效.

我可以编写一些ruby代码来自己对对象进行排序(有点简单,缩放比例较差或缩放比较复杂),但是有更好的方法吗?

sqlite activerecord ruby-on-rails find rails-activerecord

26
推荐指数
4
解决办法
2万
查看次数

Rails 根据where条件传入的数组对记录进行排序

我想按照我在 array 中传递值的顺序对我的 where 条件结果进行排序。我正在做的是我有一个 id 数组

ids = [80, 20, 3, 91, 84, 90, 98, 97, 68, 99, 92, 73]
Run Code Online (Sandbox Code Playgroud)

当我将此数组传递给 where 条件时,例如:

products = Product.where(id: ids)
Run Code Online (Sandbox Code Playgroud)

它以不同的顺序(随机顺序)返回结果活动记录关系,例如:

=>[ 20 ,84, 3,98 , .............. ] 
Run Code Online (Sandbox Code Playgroud)

(这是活动记录关系对象,我在这里只提到了 id)

但我希望它以相同的顺序返回对象,我正在传递类似的值(在活动记录关系对象中而不是数组中)

=> [80, 20, 3, 91, 84, 90, 98, 97, 68, 99, 92, 73]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点 。

ruby arrays rubygems ruby-on-rails ruby-on-rails-4

3
推荐指数
1
解决办法
1284
查看次数