gpt4 book ai didi

ruby-on-rails - 使用:counter_cache and :touch in the same association

转载 作者:行者123 更新时间:2023-12-04 04:32:42 24 4
gpt4 key购买 nike

我有一个Comment模型,belongs_to一个Message。在comments.rb中,我有以下内容:

class Comment < ActiveRecord::Base
belongs_to :message, :counter_cache => true, :touch => true
end

之所以这样做,是因为更新 counter_cache不会更新 updated_atMessage时间,我希望将它用于 cache_key

但是,当我查看日志时,我注意到这会导致两个单独的SQL更新
Message Load (4.3ms)  SELECT * FROM `messages` WHERE (`messages`.`id` = 552)
Message Update (2.2ms) UPDATE `messages` SET `comments_count` = COALESCE(`comments_count`, 0) + 1 WHERE (`id` = 552)
Message Update (2.4ms) UPDATE `messages` SET `updated_at` = '2009-08-12 18:03:55', `delta` = 1 WHERE `id` = 552

有什么方法可以仅通过一个SQL调用来完成?

编辑我还注意到它事先对消息进行了选择。那也有必要吗?

最佳答案

它可能会执行两个查询,因为尚未对其进行优化。

为什么不分支并创建补丁:D

关于ruby-on-rails - 使用:counter_cache and :touch in the same association,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1267802/

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