通过其他几个人同桌的has_many

问题描述 投票:1回答:1

我想要做的是:我有一个用户模型,我有一个任务模型任务有两种类型的用户所有者和主管都是用户!

所以到目前为止我所拥有的是:

任务模型

class Task < ActiveRecord::Base
  has_many :task_owners, dependent: :destroy
  has_many :task_supervisors, dependent: :destroy
  has_many :users, through: :task_owners
  has_many :users, through: :task_supervisors
end

TaskSupervisor模型

class TaskSupervisor < ActiveRecord::Base
  belongs_to :task
  belongs_to :user
end

TaskOwner模型

class TaskOwner < ActiveRecord::Base
  belongs_to :task
  belongs_to :user
end

最后是用户模型

class User < ActiveRecord::Base
  has_many :task_owners
  has_many :task_supervisors
  has_many :tasks, through: :task_owners
  has_many :tasks, through: :task_supervisors
end

现在,你可以想象...我的问题是,当我得到一个任务并检索用户我只得到我的一个协会...我需要的是一种方式来改变吸气剂名称或识别他们一些基本上能够说些什么

task.owners
task.supervisors
ruby-on-rails ruby associations model-associations
1个回答
1
投票
class Task < ActiveRecord::Base
  has_many :task_owners, dependent: :destroy
  has_many :task_supervisors, dependent: :destroy
  has_many :owners, through: :task_owners, source: :users
  has_many :supervisors, through: :task_supervisors, source: :users
end

你应该能够做到这一点。

然后你应该得到你的task.ownerstask.supervisors

编辑:

您需要将用户模型更改为

class User < ActiveRecord::Base
  has_many :task_owners
  has_many :task_supervisors
  has_many :owned_tasks, through: :task_owners, source: :tasks
  has_many :supervised_tasks, through: :task_supervisors, source: :tasks
end
© www.soinside.com 2019 - 2024. All rights reserved.