Tôi đang cố gắng để có được mối quan hệ has_many :through
hoạt động trong Ecto cho mối quan hệ nhiều-nhiều giữa một mô hình User
và mô hình Group
.Ecto has_many: thông qua dạng
Thông tin duy nhất tôi có thể tìm thấy trực tuyến có liên quan đến thuộc tính lồng nhau trong một bài đăng của José Valim here (tuyệt vời, nhân tiện).
Vì các nhóm đã tồn tại trong hệ thống, tôi đã hy vọng thực hiện nhiều đầu vào được chọn. Tôi gặp phải một vài vấn đề khi làm điều đó. Tôi không tin rằng có thể gán liên kết groups
trong changeset trực tiếp bởi vì tôi đã gặp lỗi mỗi khi tôi cố gắng làm như vậy. Suy nghĩ tiếp theo của tôi là thực hiện công việc thủ công (tìm kiếm, xóa và chèn các bản ghi GroupMembership
), tuy nhiên tôi không chắc đây có phải là con đường đúng để đi xuống hay không và muốn nhận được lời khuyên trước.
Vì mẫu mã có khá một vài dòng, tôi đã tạo ra một gist here.
Nếu được ưu tiên là tôi đăng trực tiếp câu hỏi này, tôi chắc chắn có thể làm điều đó.
Cảm ơn tất cả trợ giúp!
Tôi không thể nói với mã Ecto nhưng tôi có thể nói với các nguyên tắc thiết kế DB. Các kiểu DB quan hệ sẽ cho bạn biết rằng bạn không thể mô hình hóa các mối quan hệ n đến n. Những gì bạn làm là xây dựng một bảng quan hệ (trong trường hợp của bạn một cái gì đó như UsersInGroups) và sau đó bạn xây dựng một 1-n từ người dùng và nhóm để điều đó. Tôi không chắc chắn nó sẽ giúp Ecto của bạn vấn đề nhưng nó có thể là một cách tốt hơn để mô hình dữ liệu của bạn. FWIW. –