ruby-on-rails – Rails模型中的多个counter_cache
发布时间:2020-12-16 21:41:03 所属栏目:百科 来源:网络整理
导读:我正在学习Rails,并遇到一个小问题.我正在写死亡的简单应用程序与任务列表,所以模型看起来像这样: class List ActiveRecord::Base has_many :tasks has_many :undone_tasks,:class_name = 'Task',:foreign_key = 'task_id',:conditions = 'done = false' #
我正在学习Rails,并遇到一个小问题.我正在写死亡的简单应用程序与任务列表,所以模型看起来像这样:
class List < ActiveRecord::Base has_many :tasks has_many :undone_tasks,:class_name => 'Task',:foreign_key => 'task_id',:conditions => 'done = false' # ... some validations end 列表模型的表有列tasks_counter和undone_tasks_counter. class Task < ActiveRecord::Base belongs_to :list,:counter_cache => true # .. some validations end 有了这样的代码,有attr_readonly:tasks_counter用于List实例,但是我也想要一个计数器来撤销任务.有没有办法让Rails自动缓存多个计数器. 到目前为止,我已经设法创建TasksObserver,它增加或减少Task#undone_tasks_counter,但也许有一个更简单的方法. 解决方法
您是否尝试过自定义缓存列?
这里的文档: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html 它表明您可以将列名传递给counter_cache选项,您可以将其调用两次,例如 belongs_to :list,:counter_cache => true # will setup tasks_count belongs_to :list,:counter_cache => :undone_tasks_count 注意:没有实际测试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |