在我的Rails app中,我遇到了一些问题,我想知道其他人是如何解决的:
有些记录的某个值是可选的,因此某些记录在该列中的值为空(null),而有些记录则不为空。
如果在某些数据库上按该列排序,则null在某些数据库上首先排序,而在某些数据库上最后排序。
例如,我有一些照片可能属于集合,即有些照片的collection_id=nil,有些照片的collection_id=1等。
如果我执行Photo.order('collection_id desc'),那么在SQLite上我会得到nulls在最后,但在PostgreSQL上我会得到nulls在最前面。
是否有一种好的、标准的Rails方法来处理这个问题并获得在任何数据库中都能保持性能一致的结果呢?
有些记录的某个值是可选的,因此某些记录在该列中的值为空(null),而有些记录则不为空。
如果在某些数据库上按该列排序,则null在某些数据库上首先排序,而在某些数据库上最后排序。
例如,我有一些照片可能属于集合,即有些照片的collection_id=nil,有些照片的collection_id=1等。
如果我执行Photo.order('collection_id desc'),那么在SQLite上我会得到nulls在最后,但在PostgreSQL上我会得到nulls在最前面。
是否有一种好的、标准的Rails方法来处理这个问题并获得在任何数据库中都能保持性能一致的结果呢?
where
不返回一个数组,而是返回一个ActiveRecord::Relation对象,强制将结果转换为数组会导致所有期望标准ActiveRecord::Relation的东西失败(比如分页)。 - user2611793