SORU
10 NİSAN 2009, Cuma


Nasıl otomatik olarak Raylar has_many bir ilişki sıralama?

Bu çok basit bir soru gibi görünüyor ama hiç bir yerde cevap görmedim.

Eğer varsa raylar:

class Article < ActiveRecord::Base 
  has_many :comments 
end 
class Comments < ActiveRecord::Base 
  belongs_to :article 
end

Neden böyle bir şey: yorum yiyemiyorum

@article.comments(:order=>"created_at DESC")

Eğer onu çok başvurmak gerekiyorsa kapsam adında biri çalışmıyor ve insanlar bu tür şeyler yapmadım bile

@article.comments.sort { |x,y| x.created_at <=> y.created_at }

Ama daha basit bir şey olması gerektiğini söyledi. Neyi kaçırıyorum?

CEVAP
10 NİSAN 2009, Cuma


has_many kendisi de bir seçenek ile çıplak koleksiyonu için Sipariş: sıralama belirtebilirsiniz

class Article < ActiveRecord::Base 
  has_many :comments, :order => 'created_at DESC'
end 
class Comment < ActiveRecord::Base 
  belongs_to :article 
end

Ya da, eğer sıralama, veritabanı olmayan basit bir yöntem istiyorsan, sort_by kullanın:

article.comments.sort_by &:created_at

Sipariş ActiveRecord eklenen yöntemleri ile bu toplama:

article.comments.find(:all, :order => 'created_at DESC')
article.comments.all(:order => 'created_at DESC')

Yukarıdaki çözümler performans özellikleri çılgınca ilk etapta veri alınıyor sen nasıl bağlı olarak değişir ve sen Ruby uygulamayı çalıştırmak için kullanıyor. sizin kilometre değişebilir:

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BioHunta

    BioHunta

    28 Mayıs 2006
  • Flohoo

    Flohoo

    12 EYLÜL 2009
  • JamesAtiPhone

    JamesAtiPhon

    16 EYLÜL 2010