J'utilise Rails 5. J'ai ce modèleComment forcer Rails à utiliser mon cache au lieu de toujours aller à la base de données?
class MyObject < ActiveRecord::Base
...
belongs_to :distance_unit
et je remarque quand j'ai une ligne comme celle ci-dessous
distance = Distance.new({:distance => my_obj.distance, :distance_unit => my_obj.distance_unit})
il provoque les actions suivantes à exécuter
SELECT "distance_units".* FROM "distance_units" WHERE "distance_units"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
Rien d'inhabituel, mais j'ai mis en cache une méthode créée dans mon modèle 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
et je voudrais la ligne "distance = Distance.new ({: distance => mon_obj.distance,: distance_unit => mon_obj.distance_unit})" pour invoquer ma fonctionnalité en cache au lieu de courir vers la base de données. Comment puis-je atteindre cet objectif?
qu'utilisez-vous pour stocker le cache? – murb
Oh bonne question. J'ai "config.cache_store =: memory_store" dans mon fichier de configuration. – Dave