gpt4 book ai didi

ruby-on-rails - rails :counter_cache with custom query association

转载 作者:行者123 更新时间:2023-12-04 18:05:14 25 4
gpt4 key购买 nike

我有这样一个模型:

class Vote
belongs_to :content, counter_cache: true
end

class Content
has_many :votes
has_many :votes_up, -> { where(positive: true) }, class_name: 'Vote'
has_many :votes_down, -> { where(positive: false) }, class_name: 'Vote'
end

如果我创建一个正确的迁移,当我执行 mycontent.votes_count 时,它不会进行查询。

但是 mycontent.votes_up.countmycontent.votes_down.count 呢?我可以用相同(简单)的方式缓存它们吗?

最佳答案

我不知道开箱即用的 Rails 解决方案,所以我认为它需要一些自定义代码。它应该非常简单,只涉及向 Vote 添加一些回调和向 Content 添加两个缓存列。您可以在此处查看可用的回调:http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

我认为在 Vote 中添加一个 after_saveafter_destroy 就可以了。

您也可以看看这个 gem:https://github.com/magnusvk/counter_culture它可能会有所帮助。

但基本上您可以只添加一些回调到 Vote 并自己递增/递减两个自定义计数器。

关于ruby-on-rails - rails :counter_cache with custom query association,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28303843/

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