2011-12-13 2 views
2

안녕하세요. 레일즈 모델 연관을 위해 안녕하세요, 저는 이것을 할 수 있음을 알고 있습니다.Active Record Association with Memcached

예를 들어 모델 클래스 페이지.

class Page < ActiveRecord::Base 

has_many :parts 

end 

나는이 작업을 수행 할 수 있습니다

Page.first.parts.find_by_name('body') 

Page.first.parts.class 실제로 배열을 반환합니다. Part 모델의 메소드를 어떻게 활성화 할 수 있습니까? 비슷한 게시물을 찾았습니다. How do rails association methods work?

제 질문은 memcache를 사용하여 부품 방법에 대한 응답을 캐시하려고 할 때입니다. 그런 다음 Page.first.parts.find_by_name ('body')를 호출하면 배열에 find_by_name 메소드가 없다는 메시지가 나옵니다. 이 문제를 어떻게 해결할 수 있습니까? 이 방법은 많이 사용되는 캐시이므로 캐시가 있어야합니다. 당신이 부품 이름으로 필터링되지 않은 페이지 객체에 관련된 객체 부품의 배열을 다시 받고 있기 때문에

class Page 
    def parts_with_cache 
    Rails.cache.fetch("parts_for_page_#{id}", {:expires_in => 1.minutes}) do 
     parts_without_cache 
    end 
    end 
    alias_method_chain :parts, :cache 
end 

답변

0

, 단지 결과 집합에 배열 select 방법을한다.

body_parts = Page.first.parts.select{ |part| part.name == 'body' } 
관련 문제