Ich habe ein Comment
Modell, das belongs_to
ein Message
. In comments.rb
habe ich folgendes:Verwendung: counter_cache und: berühren Sie in der gleichen Zuordnung
class Comment < ActiveRecord::Base
belongs_to :message, :counter_cache => true, :touch => true
end
Ich habe dies getan, weil die counter_cache
Aktualisierung nicht die updated_at
Zeit des Message
nicht aktualisiert, und ich würde es gerne für die cache_key
.
Allerdings, wenn ich in meinem Protokoll sah bemerkte ich, dass dies bewirkt, dass zwei separate SQL-Updates
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
Gibt es eine Möglichkeit, dies mit nur einem SQL-Aufruf durchgeführt werden?
Bearbeiten Ich bemerkte auch, dass es eine SELECT der Nachricht im Voraus tut. Ist das auch nötig?
noch wie die – juanpastas
Es ist Wow, wirklich? Sieben Jahre später? Das ist verrückt. –