From be807aa9e286a77961f69ed0d024d4b49feaaffc Mon Sep 17 00:00:00 2001 From: Zach Daniel Date: Fri, 6 Sep 2024 09:56:00 -0400 Subject: [PATCH] fix: don't select destination attributes that don't exist --- lib/ash/actions/read/relationships.ex | 11 ++++++----- test/resource/resource_test.exs | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/ash/actions/read/relationships.ex b/lib/ash/actions/read/relationships.ex index ff1b8d9c..d13b2538 100644 --- a/lib/ash/actions/read/relationships.ex +++ b/lib/ash/actions/read/relationships.ex @@ -599,11 +599,12 @@ defmodule Ash.Actions.Read.Relationships do end defp select_destination_attribute(related_query, relationship) do - if Map.get(relationship, :manual) && - !Ash.Resource.Info.attribute( - relationship.destination, - relationship.destination_attribute - ) do + if Map.get(relationship, :no_attributes?) || + (Map.get(relationship, :manual) && + !Ash.Resource.Info.attribute( + relationship.destination, + relationship.destination_attribute + )) do related_query else Ash.Query.ensure_selected(related_query, [relationship.destination_attribute]) diff --git a/test/resource/resource_test.exs b/test/resource/resource_test.exs index dd0a262c..5a0420c0 100644 --- a/test/resource/resource_test.exs +++ b/test/resource/resource_test.exs @@ -194,7 +194,7 @@ defmodule Ash.Test.Resource.ResourceTest do attributes do uuid_primary_key :id attribute :name, :string, public?: true - attribute :current_year, :integer, public?: :true + attribute :current_year, :integer, public?: true end relationships do @@ -220,7 +220,7 @@ defmodule Ash.Test.Resource.ResourceTest do delorean = Ash.load!(delorean, [:next_machine]) assert delorean.next_machine.name == "San Dimas Phone Booth" - delorean = Ash.load!(delorean, [next_machine: [:name]]) + delorean = Ash.load!(delorean, next_machine: [:name]) assert delorean.next_machine.name == "San Dimas Phone Booth" end end