11

ほとんどのモデルでは、デフォルトのソート順 (id desc) で問題ありません。しかし、私のモデルの 1 つのいくつかのスコープでは、順序を逆にするか、updated_at フィールドで並べ替える方が理にかなっています。

他の機能を壊さずにこれを達成することはできないようですので、他の誰かがこれを行う方法を教えてくれることを願っています!

返すオブジェクトに .order() を追加しようとしました:

scope :example do |models|
  models.order('id asc')
end

これは効果がないようです。

また、スコープ解除も試しましたが、これはうまくいきます。オブジェクトを希望どおりに並べ替えますが、すべてのフィルタリング/検索機能が完全に壊れます。

scope :example do |models|
  models.unscoped.order('id asc')
end

何をすべきか?

4

4 に答える 4

10

次のように config.sort_order を使用します。

config.sort_order = "updated_at_desc"
于 2013-07-12T10:21:06.347 に答える
5

モデルに 2 つのスコープを作成し、1 つは特定の並べ替え順序用に、もう 1 つは逆順にしてから、ActiveAdmin で 1 つをデフォルトとして設定してみませんか?

scope :example_asc, :default => true
scope :example_desc

それがうまくいかない場合は、おそらく ActiveAdmin でコントローラーブロックを作成して、何をしようとしているのかを定義してください。

controller do
  def asc
    Model.order('id ASC')
  end
  def desc
    Model.order('id DESC')
  end
end

scope :example do |models|
  asc
end

scope :example do |models|
  desc
end

そして最後に、この答えはおそらくかなり正確だと思います: https://stackoverflow.com/a/17612718/175825

ただし、実装方法についてさらに調査することをお勧めしますsort_order

なんといっても、私は ActiveAdmin の細身のドキュメントのファンではありません。幸運を。

于 2013-12-13T17:16:42.163 に答える