SORU
5 Kasım 2009, PERŞEMBE


ActiveRecord.bul(array_of_ids), koruma amacıyla

Raylar Something.find(array_of_ids) Ne zaman, sonuçta elde edilen dizinin sipariş array_of_ids sırasına bağlı değildir.

Yapmak için herhangi bir yol bulmak ve düzeni korumak var mı?

ATM kayıtları el ile Kimlikleri sırasına göre sıralama, ama bu biraz sakat.

UDP: mümkünse sipariş :order param kullanarak ve SQL tümcesi bir tür belirtmek için, o zaman nasıl?

CEVAP
22 Mart 2013, Cuma


Ne tuhaftır ki, kimse böyle bir şey önerdi

index = Something.find(array_of_ids).group_by(&:id)
array_of_ids.map { |i| index[i].first }

İzin dışında olabildiğince verimli SQL arka uç.

Düzenleme:Kendi cevabımı geliştirmek için de bu böyle

Something.find(array_of_ids).index_by(&:id).slice(*array_of_ids).values

#index_by #slice oldukça kullanışlı diziler ve karma ActiveSupport eklemeler sırasıyla.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • FUNKER530 - Veteran Community & Combat Footage

    FUNKER530 -

    25 Ocak 2007
  • Miles Fisher

    Miles Fisher

    8 NİSAN 2009