سؤال

ونتظاهر لدي نموذج والبريد التي has_many: تعليقات. كيف يمكنني فقط عرض الوظائف التي لديك تعليقات؟

وأنا مرتاح نوعا ما مع named_scope لكني لا أعرف كيف يمكن أن أضع Post.comments (أو self.comments) في: تجزئة الشروط التي تتوقع حرف

class Post < ActiveRecord::Base
     has_many :comments
     named_scope :with_comments, :conditions => [#self.comments.length > 0]
end

وماذا أكتب في منطقة علق؟

وشكرا!

هل كانت مفيدة؟

المحلول

وربما يكون من الأفضل أن تضع counter_cache على المشاركة.

class Comment < AR:Base
  belongs_to :post, :counter_cache => true
end

وبعد ذلك ما عليك سوى أن تفعل 1 استعلام بدلا من اثنين.

وPost.find(:all, :conditions => ["counter_cache > 0"])

نصائح أخرى

ويجب أن تكون قادرة على الانضمام فقط ضد طاولة تعليقاتكم، مع التأكد من تحديد الصفوف متميزة

named_scope :with_comments, :joins => :comments, :select => 'DISTINCT posts.*'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top