Мои ассоциации (упрощенный):Я думаю, что этот запрос не так?
проекта
has_many :users
has_many :tasklists
Tasklist
has_many :tasks
Задача
belongs_to :tasklist
Пользователь
has_many :assigned_tasks, class_name: 'Task', foreign_key: 'assignee_id'
То, что я хочу сделать
Я хочу показать ресурс проекта, содержащих пользователь проекта, каждый из которых содержит возложенную на них задачу.
Я пробовал:
project = Project.includes(users: :assigned_tasks).find(params[:id])
Этот вид работ, за исключением, что она возвращает даже assigned_tasks, которые не принадлежат к исходному проекту. И это не то, что я хочу. Мне нужны только назначенные задания, являющиеся дочерними элементами этого проекта.
Возможно, весь подход неправильный. Может быть, мне стоит подумать с точки зрения задач, например, например:
project = Project.includes(tasklists: :tasks)
Но тогда Как организовать задачи у пользователей?
Надеюсь, у меня есть смысл здесь. Любая помощь будет очень оценена. Thanks
Привет, спасибо за этот очень полный ответ. Мне очень нравится последний подход. Я не знал, что вы можете использовать has_many через этот путь, и это здорово. Тем не менее, я закончил использовать второй подход, так как мое приложение rails - это REST API, и структура данных имеет большое значение (рельсы были недовольны тем, что я делал project.users = project.tasks.group_by (&: user) it бросил ошибку типа). Но в любом случае это решило мою проблему, и я узнал новые трюки, поэтому спасибо Alex P :) – MonsieurNinja