Tengo un modelo Comment
que belongs_to
a Message
. En comments.rb
Tengo el siguiente:Usando: counter_cache y: toque en la misma asociación
class Comment < ActiveRecord::Base
belongs_to :message, :counter_cache => true, :touch => true
end
que he hecho esto porque la actualización del counter_cache
no actualiza el tiempo updated_at
del Message
, y me gustaría que para el cache_key
.
Sin embargo, cuando miré en mi registro me di cuenta de que esto provoca dos actualizaciones de SQL separadas
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
¿Hay alguna manera esto se puede hacer con sólo una llamada SQL?
Editar También me di cuenta de que hace un SELECCIONAR el Mensaje de antemano. ¿Eso también es necesario?
Es todavía como que – juanpastas
Wow, realmente? ¿Siete años despues? Eso es una locura –