나는이 모델Rails가 항상 데이터베이스를 사용하지 않고 캐시를 사용하도록하려면 어떻게해야합니까?
class MyObject < ActiveRecord::Base
...
belongs_to :distance_unit
을 가지고 있고 나는 그것이이
SELECT "distance_units".* FROM "distance_units" WHERE "distance_units"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
을 실행하기 위해 다음과 같은 원인
distance = Distance.new({:distance => my_obj.distance, :distance_unit => my_obj.distance_unit})
아래 같은 라인이 때주의 사항
특별한 것은 없지만 내 DistanceUnit 모델에서 캐시 된 메소드가 생성되었습니다.
class DistanceUnit < ActiveRecord::Base
def self.cached_find_by_id(id)
Rails.cache.fetch("distanceunit-#{id}") do
puts "looking for id: #{id}"
find_by_id(id)
end
end
및 "데이터베이스에서 실행하는 대신 캐시 된 기능을 호출하려면"distance = Distance.new ({: distance => my_obj.distance, : distance_unit => my_obj.distance_unit}) "행을 사용하고 싶습니다. 이것을 어떻게 할 수 있습니까?
캐시를 저장하기 위해 무엇을 사용하고 있습니까? – murb
오, 좋은 질문입니다. 내 config 파일에 "config.cache_store = : memory_store"가 있습니다. – Dave