ruby-on-rails – Rails模型中的多个counter_cache

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails模型中的多个counter_cache前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在学习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

注意:没有实际测试.

原文链接:https://www.f2er.com/ruby/267098.html

猜你在找的Ruby相关文章