私はUser_typeに属するUserを持っています。 user_typeモデルには、user_typesとそのユーザーを表示するときのデフォルトのソートを処理するpositionというフィールドがあります。関連するモデルのフィールドgroup_byとソート
不幸なことに、これはRansackで検索する場合は機能しません。そのため、Userモデルから検索し、user_type_idに基づいてレコードをグループ化する必要があります。
これは完全に機能しますが、user_typeモデルで定義されているソートを尊重する方法が必要です。これも動的なので、ソートがユーザーモデルから何であるかを示す方法はありません。
私はgroup_by配列をループして手動で並べ替える必要があると思います。しかし、どこから始めるべきかわからない。これはコントローラメソッドです:
def index
@q = User.ransack(params[:q])
@users = @q.result(distinct: true).group_by &:user_type
end
関連モデルでフィールドをソートするには、どのようにその配列を操作しますか?
default_scopeは、いずれの場合に使用するのは良いアイデアではありません。予期しない動作が発生する可能性があります。スコープを作成するか、純粋な 'order'メソッドを使用する方が良いです。 –
UserTypeから実行されたクエリがないため、これは機能しません。 –