2010-08-29 11 views
31
books = Book.find(:all) 
articles = Articles.find(:all) 

iki ActiveRecord dizileri ve düzeni Birleştirme:Ben böyle bir şey yapabileceğini biliyordum <a href="http://guides.rubyonrails.org/layouts_and_rendering.html" rel="noreferrer">http://guides.rubyonrails.org/layouts_and_rendering.html</a> dan okuyarak created_at

<%= render :partial => [customer1, employee1, customer2, employee2] %> 

ve uygun şekilde _customer ve _employee partials kullanmak.

materials = books + articles 
materials.sort_by_created_at 

ve görünümde:

Yani böyle bir şey yapmak istiyorum yardım için teşekkür ??? iki ActiveRecord Dizilerin birleşmesini ve sıralamayı nasıl yapılır

<%= render :partial => materials %> 

!

cevap

72

Çok yakınsınız.

materials = books + articles

(Enumerable gelen karışık) sort_by yöntemini çağırarak yapılabilir kombine dizi sıralama ve &:

materials.sort_by(&:created_at) öneki özelliğinde geçen: dizileri bitiştirme artı işareti ile yapılır

Bu, büyük sonuç kümeleri için performans açısından iyi bir performans olmayacaktır. Veritabanı ve benzer bir alt sınıftan (Materyal gibi), benzer olduklarında, bunları aynı tabloda saklamak için STI (Tek Tablo Kalıtımı) kullanarak ve order yan tümcesiyle find'u kullanarak elde etmeyi düşünebilirsiniz. sizin için sıralama.

6

İki diziyi birleştirmek için Array#concat'u da kullanabilirsiniz.

İlgili konular