1. ホーム
  2. ruby-on-rails

[解決済み] Rails。ヌルの順番は最後に

2023-02-14 14:56:17

質問

私のRailsアプリで何度か問題に遭遇しましたが、他の人がどのように解決しているかを知りたいです。

私は値がオプションである特定のレコードを持っているので、いくつかのレコードはそのカラムの値を持ち、いくつかはnullです。

あるデータベースでそのカラムで並べ替えると、null が最初にソートされ、あるデータベースでは null が最後にソートされます。

たとえば、コレクションに属するかどうかわからない写真、つまり、いくつかの写真で collection_id=nil となっているものもあれば collection_id=1 など。

もし私が Photo.order('collection_id desc) とすると、SQLiteでは最後にnullを取得しますが、PostgreSQLでは最初にnullを取得します。

これを処理して、どのデータベースでも一貫したパフォーマンスを得るための、素晴らしい標準的なRailsの方法はありますか?

どのように解決するのですか?

配列を足し合わせると、順序が保たれます。

@nonull = Photo.where("collection_id is not null").order("collection_id desc")
@yesnull = Photo.where("collection_id is null")
@wanted = @nonull+@yesnull

http://www.ruby-doc.org/core/classes/Array.html#M000271