2013-07-12 14 views
8

Çoğu modelde, varsayılan sıralama düzeni (kimlik doğrulaması) düzgündür. Ancak, modellerimin birindeki birkaç kapsam için, siparişi tersine çevirmek ya da updated_at alanı tarafından sipariş vermek için daha fazla gönderilecek.ActiveAdmin kapsamındaki varsayılan sıralama sırasını değiştir

Bunu diğer işlevler bozmadan başaramıyorum, bu yüzden başka birinin bana bunu nasıl yapacağımı öğreteceğini umuyorum! Ben iade ediyorum nesneler üzerinde bir örnekler: .Sipariþ() ekleyerek denedim

:

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

Bu, herhangi bir etkiye sahip görünmemektedir.

Ayrıca, hangi tür çalışmaların yapılmadığını da denedim. Nesnemi istediğim gibi sıralar, ancak tüm filtreleme/arama işlevlerini tamamen bozar.

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

Ne yapmalı? gibi

+0

@ beck03076 Bu yorum yapıcı değildir. Sorusunun cevabına sahip değilseniz, troll gerek yok. –

+1

@rogerkk https://github.com/gregbell/active_admin/issues/312 – ahmet

+0

Teşekkürler @ahmet, googling yaparken bu sorunu bulamadım. Şimdi önerileri denedim ve sıralama düzeni hala bir şekilde geçersiz sayılıyor. – rogerkk

cevap

7

kullanım config.sort_order: Neden Modelinizdeki 2 kapsamları, belirli bir sıralama düzeninde için bir, diğer, yapamaz

config.sort_order = "updated_at_desc" 
+2

Anladığım kadarıyla bu, tüm kapsamlardaki sıralama düzenini değiştirecektir. Bazılarının farklı şekilde sıralanmasını istiyorum. ActiveAdmin hakkında bir şey sevmemek için – rogerkk

4

sonra, ters ActiveAdmin içinde varsayılan olarak ayarlayabilirsiniz? Bu sizin için işe yaramazsa

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

, belki de yapmaya çalıştığınız şeyi tanımlayan ActiveAdmin bir kontrolör blok oluşturmak:

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 

Ve son olarak, bu yanıt oldukça muhtemelen olduğunu düşünüyorum doğru: https://stackoverflow.com/a/17612718/175825

Ama sen nasıl uygulayabileceğiniz hakkında daha fazla incelemek isteyebilirsiniz sort_order:

    Ne olursa olsun için

https://github.com/gregbell/active_admin/blob/master/lib/active_admin/dsl.rb#L25

  • https://github.com/gregbell/active_admin/blob/master/lib/active_admin/dsl.rb#L97
  • , ben ActiveAdmin en sıska dokümanlar bir hayranı değilim. İyi şanslar.

  • +8

    +1. – Ricky

    1

    Varsayılan sıralamayı geçersiz kılmak için yeniden sıralama kullanmanız gerekir. Bunu dene!

    scope :example do |models| 
        models.reorder('id asc') 
    end 
    
    +2

    Bu çözümle ilgili sorun, maalesef, diğer sütunlardan herhangi birine UI aracılığıyla manuel olarak sıralama yapmamı engelliyor olmasıdır. – rogerkk

    İlgili konular