Próbuję uzyskać relację has_many :through
pracując w Ecto dla wielu wielu relacji między modelem User
a modelem Group
.Ecto has_many: w postaci
Jedyne informacje, które udało mi się znaleźć w Internecie, dotyczyły zagnieżdżonych atrybutów w poście autorstwa José Valima here (co jest znakomite, nawiasem mówiąc).
Ponieważ grupy już istnieją w systemie, miałem nadzieję, że zrobię kilka wejść wielokrotnych. W trakcie tego natrafiłem na kilka problemów. Nie sądzę, że możliwe jest przypisanie skojarzenia groups
w zestawie zmian bezpośrednio, ponieważ otrzymałem błąd za każdym razem, gdy próbowałem to zrobić. Moja następna myśl polegała na ręcznym wykonaniu pracy (odnalezieniu, usunięciu i wstawieniu rekordów), jednak nie byłem pewien, czy jest to właściwa droga do zejścia, i chciałbym najpierw zasięgnąć porady.
Ponieważ próbka kodu ma kilka linijek, wykonałem sedno here.
Jeśli wolę, aby opublikować go bezpośrednio w tym pytaniu, z pewnością mogę to zrobić.
Dzięki za pomoc!
Nie mogę mówić do kodu Ecto, ale mogę mówić do zasad projektowania DB. Relacyjne bazy danych DB powiedzą, że nie można modelować relacji n do n. Robisz to, budujesz tabelę relacji (w twoim przypadku coś podobnego do UsersInGroups), a następnie budujesz 1-n od użytkowników i grup do tego. Nie jestem pewien, czy pomogłoby to problemowi Ecto, ale prawdopodobnie jest to lepszy sposób na modelowanie danych. FWIW. –