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

  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • o0oCyrusViruso0o

    o0oCyrusViru

    11 Mart 2008
  • TouchePro

    TouchePro

    27 EYLÜL 2007