2

저는 레일 v.3.2.13 및 루비 1.9.3p392를 사용하여 acts-as-taggable-on 보석 v.2.4.1을 사용하고 있습니다. 방금 ​​보석을 v.2.2.1에서 v.2.4.1로 업그레이드 한 후 these instructions 데이터베이스에 'cached_tag_list'열을 추가했습니다. 레코드가 저장/업데이트 될 때 열이 예상대로 업데이트되는 것처럼 보일 수 있지만 태그가있는 레코드를 가져 오려고하면 SQL 태그 쿼리가 수행되고 캐시 된 태그를 가져 오지 못하는 것을 볼 수 있습니다. newrelic는 SQL 쿼리가이 기록 태그 문자열을 저장 한 경우에도 수행되는 보여주는에서 스크린 샷을태그가있는 캐싱 동작이 작동하지 않는 것 같습니다.

acts_as_taggable_on :tags 

그리고 여기 :

<% if !tape.tag_list.empty? %> 
    <% for tag in tape.tags %> 
     <span><%= tag.name %></span> 
    <% end %> 
<% end %> 

내 모델은 다음 줄이 있습니다 이 내보기에 내 코드입니다 ''cached_tag_list '데이터베이스 열에 있습니다. SQL queries performed, caching not working

이 보석으로 캐싱을 사용하는 방법에 대한 아이디어가 있으십니까?

감사합니다, 알렉스이 버그가 수정 될 때까지

+0

는 http://stackoverflow.com/questions/3946783/how-to-cache-tags-with-acts-의 읽기 되세요 ..이 다른 사람에게 유용한 경우이 공유 해요 as-taggable-on – David

+0

@David 연결된 질문에 대한 답이 내 경우와 관련이 없다고 생각합니다. 1) 위의 마이 그 레이션 코드는 제공 한 링크의 답변과 동일하므로 잘 돌아 가지 않습니다. 문제 (실제로 나는이 질문에서 코드를 사용했다). 2) 중고 태그를 사용하지 않아 문제가되지 않습니다. 어쨌든 답장을 보내 주셔서 감사합니다. – Alex

답변

1

은, 여기에 내가 구현 한 해결 방법입니다 :

<% if tape.cached_tag_list != "" %> 
     <% for tag in tape.cached_tag_list.split(', ') %> 
      <span><%= tag %></span> 
     <% end %> 
    <% end %> 

cached_tag_list 열이 제대로 기록은 내가 사용하고 저장 될 때마다 업데이트되기 때문에 여분의 SQL 쿼리를 호출하지 않고 각 레코드의 태그를 얻습니다. cached_tag_list 열에는 쉼표로 구분 된 태그가있는 문자열이 저장되어 있으므로 split() 함수를 사용하여 각 태그를 가져옵니다.

나는

+0

은 부모 테이블의'cached_tag_list' 열입니까? 아니면 순전히 방법일까요? – ahnbizcad