سؤال

أنا ألعب مع شوكة من ACTS_AS_TAGGABLE_ON_STEROIDS كتمرين تعليمي. الإصدار الذي أبحث عنه يقوم ببعض الأشياء التي لا أفهمها لحساب عدد العلامات. لذلك اعتقدت أنني سأفعل نسخة باستخدام Porc (عدادات القضبان القديمة العادية):

class Tagging < ActiveRecord::Base #:nodoc:
  belongs_to :tag, :counter_cache => "tagging_counter_cache"
...

فكرت في tagging_counter_cache تم الوصول إليه بشفافية عندما أقوم بالوصول إلى tag.taggings.count ولكن على ما يبدو لا؟ هل يجب علي حقًا الوصول إلى tag.tagging_counter_cache بشكل صريح؟

>> tag.taggings.count
  SQL (0.7ms)   SELECT count(*) AS count_all FROM `taggings` WHERE (`taggings`.tag_id = 16) 

نفس الحجم.

إنه لأمر رائع إذا كان هذا هو الحال ولكن أراد فقط التحقق.

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

المحلول

استدعاء #Size على المجموعة

>> tag.taggings.size

سيعود القيمة في ذاكرة التخزين المؤقت المضادة. استدعاء #count

>> tag.taggings.count

سوف تجبر دائمًا مكالمة SQL للحصول على أحدث عدد.

نصائح أخرى

هل قمت بإنشاء العمود المرتبط في ترحيلك؟ يحتاج إلى مكان لتخزين ذاكرة التخزين المؤقت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top