次のようなメソッドを定義して、カスタム ソートを ActiveRecord モデルに追加しました。
class MyClass < ActiveRecord::Base
belongs_to :parent_model #this would be the many in a has_many relationship
def <=>(other)
self.att <=> other.att
end
end
比較で実際に使用されているロジックは、この例よりも少し複雑であり、SQL で実現できるものではありません。
このクラスは、包含モデルのネストされたフィールドとしてのみ使用されるため、結果セットをソートする簡単な場所はないようです。コントローラーでは、:my_class は熱心な読み込みのためのインクルードの一部ですが、ビューまで (form.fields_for :my_class を実行するとき) オブジェクト配列で他に何もしません。私が本当に望んでいるのは、論理ソートを使用して default_scope と同等のことを実行できるようにすることですが、それは不可能だと思います。現在、私の唯一のオプションは、この結果をソートするためだけにコントローラーに余分な行を追加することのようですが、それは正しいことではないようです。
ここで見逃しているもっとエレガントなものはありますか?