मैं रेल सीख रहा हूं, और थोड़ी सी समस्या में आया। मैं कार्यों की सूची के साथ मृत सरल अनुप्रयोग लिख रहा हूँ, इसलिए मॉडल है कि कुछ इस तरह दिखाई:रेल मॉडल में एकाधिक counter_cache
class List < ActiveRecord::Base
has_many :tasks
has_many :undone_tasks, :class_name => 'Task',
:foreign_key => 'task_id',
:conditions => 'done = false'
# ... some validations
end
के लिए तालिका List
मॉडल कॉलम tasks_counter
और undone_tasks_counter
है।
class Task < ActiveRecord::Base
belongs_to :list, :counter_cache => true
# .. some validations
end
इस तरह के कोड के साथ वहाँ List
उदाहरण के लिए attr_readonly :tasks_counter
है, लेकिन मैं पूर्ववत कार्यों के लिए एक काउंटर के रूप में अच्छी तरह से करना चाहते हैं। रेल द्वारा स्वचालित रूप से कैश किए गए कई काउंटर होने का कोई तरीका है।
अब तक, मैंने TasksObserver
बनाने में कामयाब रहा है जो Task#undone_tasks_counter
में वृद्धि या कमी करता है, लेकिन शायद एक आसान तरीका है।
क्या आपने इसे अंत में समझ लिया? –