I’ve got a Schema “Details” and a Schema “Buildables”. Inside of Details, I want it to have multiple associations (shown below) but they’re all different iterations of the same schema, Buildables. Is this possible or do I have to make a unique schema for each of these associations?
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)
The code shown in your post should certainly work, but it doesn’t include any distinction between the different kinds of Buildable. Assuming there is a type on Buildable as @zwippie did, you could filter the associations with where: