Techioz Blog

特定の属性を最初にリストしてオブジェクトを順序付けるにはどうすればよいですか?

概要

これを持っています

@requests = current_fan.handled_requests.order(:id).reverse_order

ただし、 new_response = true のリクエストを最初(一番上)にリストしたいと思います(可能であれば、:idの逆順でもリストしますが、必須ではありません)。

 @requests = current_fan.handled_requests.order(:id).reverse_order.order(:new_response)

機能しませんでした

@requests = current_fan.handled_requests.order(:id).reverse_order.prioritize(:new_response)

あれは私が作りました

解決策

次のように、複数の注文条件と注文指示を渡すことができます。

current_fan.handled_requests.order(new_response: :desc, id: :desc)

new_response: :desc は、 new_response == true を先頭に、new_response == false を末尾に持つレコードを並べ替えます。同じ new_response 値を持つレコードが複数ある場合、それらのレコードは id: :desc を使用して ID の降順で並べ替えられます。