Multiple has_many associations, different name, same struct

Hi @warronbebster and welcome to the forum.

I don’t think this can be done with has_many.
Update: It’s possible, see this answer of al2o3cr.

An alternative approach, don’t know if this would work for you: define functions in your context module for all the different types of buildables:

def single_family_homes(%Detail{id: id}} do
  Repo.all(from b in Buildable, where: b.detail_id == ^id and b.type == "single_family_home")
end

# ... etc for all types of houses

So now you can call MayorGame.City.single_family_homes(detail).

(PS: just assuming here that your context module is called City and there is a type attribute for Buildable)