diff --git a/app/models/crop.rb b/app/models/crop.rb index 351ed0ae7..bf94a9fed 100644 --- a/app/models/crop.rb +++ b/app/models/crop.rb @@ -165,9 +165,11 @@ class Crop < ApplicationRecord end def all_companions - return companions unless parent - - (companions + parent.all_companions).uniq + @all_companions ||= if parent + (companions + parent.all_companions).uniq + else + companions + end end before_destroy :destroy_reverse_companionships diff --git a/app/views/crops/show.html.haml b/app/views/crops/show.html.haml index 777d3d75d..46cf0154b 100644 --- a/app/views/crops/show.html.haml +++ b/app/views/crops/show.html.haml @@ -36,10 +36,11 @@ = cute_icon = render 'predictions', crop: @crop - if @crop.all_companions.any? - %section.companions - %h2 Companions - - @crop.all_companions.each do |companion| - = render 'crops/tiny', crop: companion + - cache [@crop, 'companions'] do + %section.companions + %h2 Companions + - @crop.all_companions.each do |companion| + = render 'crops/tiny', crop: companion - if crop_or_parent(@crop, :en_youtube_url).present? %section.youtube