User.attachments ve Attachment.visits sayı sayısı ile bir tamsayı var.Yuvalanmış koleksiyonun tüm özelliklerini nasıl toplamlarım?
O kullanıcının tüm görüntülerinin ziyaretlerini kolayca nasıl sayabilirim?
User.attachments ve Attachment.visits sayı sayısı ile bir tamsayı var.Yuvalanmış koleksiyonun tüm özelliklerini nasıl toplamlarım?
O kullanıcının tüm görüntülerinin ziyaretlerini kolayca nasıl sayabilirim?
Kullanım ActiveRecord::Base#sum:
user.attachments.sum(:visits)
Bu böyle verimli bir SQL sorgusu oluşturmak olmalıdır: Düz Eski Yakut Nesneler ile
SELECT SUM(attachments.visits) FROM attachments WHERE attachments.user_id = ID
user.attachments.map{|a| a.visits}.sum
veya "user.att achments.map (&: ziyaretleri) .sum' – rubyprince
veya 'user.attachments.sum (&: ziyaretleri)' – Jordan
Gerçekten de, Jordon'un çözümü en iyisidir. – Calin
da inject
var:
user.attachments.inject(0) { |sum, a| sum + a.visits }
İnsanlar genellikle (haklı olarak) inject
istemem, ama bunu gerçekleştirmenin diğer iki temel yolu söz beri, ben de atmak düşündüm dışarıda. :)
aşağıdaki eserlerini ve aşağıdaki marjinal hızlıdır şüpheli count += a.visits
'u kullanmaktan daha fazlası, ayrıca içinde bir ifade vardır:
user.attachments.map(&:visits).inject(:+)
Hahahahah bugüne kadar, en iyi cevap hahaha – facundofarias
Ziyaretlerin kapsamını özetlemek isterseniz. Örneğin, ziyaretlerin kapsamı vardır: active, -> {where ('öznitelik NULL değil')}. Bir şey "user.attachments.sum (visit.active)? – doug