gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:45:43 25 4
gpt4 key购买 nike

我正在学习 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
List的表模型有列 tasks_counterundone_tasks_counter .
class Task < ActiveRecord::Base
belongs_to :list, :counter_cache => true
# .. some validations
end

有了这样的代码,就有 attr_readonly :tasks_counterList实例,但我也想有一个计数器来处理未完成的任务。有没有办法让 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

注:未实际测试。

关于ruby-on-rails - Rails 模型中的多个 counter_cache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3271271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com