diff --git a/app/controllers/crops_controller.rb b/app/controllers/crops_controller.rb index 0caac083b..7fbd6a876 100644 --- a/app/controllers/crops_controller.rb +++ b/app/controllers/crops_controller.rb @@ -73,7 +73,7 @@ class CropsController < ApplicationController format.html do @posts = @crop.posts.order(created_at: :desc).paginate(page: params[:page]) @companions = @crop.companions.approved - member_ids = @crop.versions.map(&:whodunnit).compact.map(&:to_i) + member_ids = @crop.versions.reorder(nil).distinct.pluck(:whodunnit).compact.map(&:to_i) @version_members = Member.where(id: member_ids).index_by(&:id) end format.svg do diff --git a/spec/controllers/crops_controller_spec.rb b/spec/controllers/crops_controller_spec.rb index 86dbf0988..7bac0558b 100644 --- a/spec/controllers/crops_controller_spec.rb +++ b/spec/controllers/crops_controller_spec.rb @@ -28,6 +28,27 @@ describe CropsController do end end + describe "GET show" do + let!(:crop) { create(:crop) } + let!(:member) { create(:member) } + + before do + PaperTrail::Version.create!( + item_type: 'Crop', + item_id: crop.id, + event: 'update', + whodunnit: member.id.to_s, + created_at: Time.current + ) + end + + it "fetches crop show page and sets version members using distinct whodunnit IDs" do + get :show, params: { slug: crop.to_param } + expect(response).to be_successful + expect(assigns(:version_members)).to eq({ member.id => member }) + end + end + describe "GET crop hierarchy" do describe 'fetches the crop hierarchy page' do context 'wrangler' do