3

events.rb に次のコードがあります。デフォルトでは、sort_order を updated_at_desc に設定しています。

しかし、url にパラメータ ride_id (http://localhost:3000/admin/events?ride_id=3009) がある場合、created_at asc に基づいて並べ替える必要があります。

機能していません。まだ sort_order updated_at_desc で結果をフェッチしています。これはどのように行うことができますか。助けてください。

以下のコードは、私が使用した以前のバージョンのアクティブ管理者で動作していましたが、0.5.0 に更新すると、この問題が発生します。

ActiveAdmin.register Event do
  config.sort_order = 'updated_at_desc'
  controller do
    def scoped_collection
      if params[:ride_id].present?
        end_of_association_chain.select('events.*').where('events.booking_id = ?', params[:ride_id]).order('created_at asc')
      else
       end_of_association_chain.select('events.*')
    end
  end
end

終わり

並び替え機能も使いました

end_of_association_chain.select('events.*').where('events.booking_id = ?', params[:ride_id]).reorder('created_at asc')

まだ、updated_at_desc によるデフォルトの並べ替えをオーバーライドできません。助けてください。

4

1 に答える 1

2

どこかにセットアップしている場合は、次のようなものを使用します。

default_scope order: '... DESC'

あなたが使用することができます

.unscoped

このような:

end_of_association_chain.select('events.*').unscoped.where...

少なくともそれが私の同様の問題を修正したものです。

default_scope を使用することは悪い考えであると述べている次の投稿に注意してください。これは、まさに私/私たちが経験したことによるものです。

http://pragdave.blogs.pragprog.com/pragdave/2012/03/be-careful-using-default_scope-and-order.html

これが役立つことを願っています、
TheMahrvin

于 2012-12-21T14:22:11.890 に答える