الوصول إلى ذاكرة التخزين المؤقت لروبي
-
22-09-2019 - |
سؤال
أنا ألعب مع شوكة من 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 للحصول على أحدث عدد.
نصائح أخرى
هل قمت بإنشاء العمود المرتبط في ترحيلك؟ يحتاج إلى مكان لتخزين ذاكرة التخزين المؤقت.
لا تنتمي إلى StackOverflow