2009-08-12 3 views
9

belongs_toMessage이라는 모델이 있습니다. counter_cache를 업데이트하면 Messageupdated_at 시간을 업데이트하지 않습니다, 그리고 내가 cache_key에 대한에 싶습니다 때문에사용 : counter_cache 및 : 동일한 연결에서 터치하십시오.

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

내가 이런 짓을했습니다 comments.rb에서 나는 다음과 같은 있습니다. 내 로그에 보았을 때

그러나,이 두 개의 별도의 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 호출하여 수행 할 수있는 방법이 있나요

원인 것으로 나타났습니다?

편집 나는 미리 메시지를 선택했음을 알게되었습니다. 그게 필요한가요?

+0

정말, 그 – juanpastas

+0

와우처럼 아직? 7 년 후? 그건 미친 짓이야. –

답변

4

아직 최적화되지 않았기 때문에 쿼리가 두 개일 수 있습니다.

왜 분기 및 패치를 만들 : D

관련 문제