我想做的是: 我有一个用户模型,我有一个任务模型 任务有两种类型的用户所有者和监督者都是用户!
所以我到目前为止的是:
任务模型
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
答案 0 :(得分: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.owners
和task.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