0

Ben ilişki, iki model, Öğrenci ve Devamsızlık var: Ben her öğrenci için günlüğe kaç devamsızlık görmek istiyorumRaylar: Boyut bir Has_many ilişkisine çalışmıyor

class Student < ActiveRecord::Base 
    has_many :absences 

class Absence < ActiveRecord::Base 
    belongs_to :student 

ve gösteri olduğunu öğrencinin #show sayfasında toplam. Konsolda, ben çağırarak bu sorgulamak açabiliyorum:

a = Student.find(1) 
a.absences.size 

Ancak, bu uygulamanın kendisinde çalışmak için görünmektedir olamaz. Bunu uygulamada sorgulamanın tercih edilen yolu model mi yoksa kontrolör mü?

cevap

1

Bu, hiçbir zaman çalışmayacaktır, çünkü örnek üzerinde ilişkilendirmeyi çağırıyorsunuz, örneğin. İlk başta, ilişkili kayıtları saymak ardından bir öğrenci alıp olmalıdır:

attr_accessor :absence_count 

ve sonra böyle bir şey yapmak: Tüm öğrenciler için bu bilgileri toplamak için

Student.find(<id here>).absences.size 

, sen Student modelinde absence_count nitelik erişimci ekleyebilir Bu:

sadece görünümde çıktı o gerekiyorsa
Student.includes(:absences).each{|s| s.absence_count = s.absences.size} 

, o zaman aşağıdakileri deneyebilirsiniz:

Student.includes(:absences).each do |student| 
    puts student.absences.size 
end 
+0

Haklısınız. Konsolda çalışmak için aldığımda, Öğrenci modelinin bir örneğini sorguladığını söylemeliydim. Bunu açıklığa kavuşturmak için sorumu güncelleyeceğim. – kongzi

+0

Kongzi: İstenen sonuç çıktısını gönder – potashin

+0

İstenen sonuç çıktısı, her bir Öğrenci için, bunların sayısıdır. – kongzi

İlgili konular