Ruby on rails 在rails中有没有一种通过代理处理关联的方法?

Ruby on rails 在rails中有没有一种通过代理处理关联的方法?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,假设我有一个人和一个任务表。一个人可以有许多任务,但有时,一个人可以有一个主要任务,这是其他任务的组合。为此,我插入多行任务,分组。但我不想添加任何其他表,如BigTask 那么,有没有一种方法可以处理通过类似代理的方式创建任务 人员通过代理(摘要)与任务相关 这样我就可以保存并初始化一个代理,并将为我提供一个包含0个或多个任务对象的数组。将上述评论中表达的想法充实起来,我相信类似的方法应该会奏效: class Task < ActiveRecord::Base belongs_to

假设我有一个人和一个任务表。一个人可以有许多任务,但有时,一个人可以有一个主要任务,这是其他任务的组合。为此,我插入多行任务,分组。但我不想添加任何其他表,如BigTask

那么,有没有一种方法可以处理通过类似代理的方式创建任务

人员通过代理(摘要)与任务相关


这样我就可以保存并初始化一个代理,并将为我提供一个包含0个或多个任务对象的数组。

将上述评论中表达的想法充实起来,我相信类似的方法应该会奏效:

class Task < ActiveRecord::Base
  belongs_to :person
  belongs_to :big_task, class_name: "Task"
  has_many :sub_tasks, class_name: "Task", foreign_key: "big_task_id"
end

class Person < ActiveRecord::Base
  has_many :big_tasks, class_name: "Task"
  has_many :tasks
  has_many :sub_tasks, through: tasks
end

不要认为你认为的proxys是一个好主意,但是如果你有一个任务模型,一个任务本身可以有其他任务,那么自联接又如何呢?我知道你不想,但我认为你需要创建另一个表(例如任务集)并使用has\u many:through关联。
p = Person.find(id)
biggie = p.tasks.create(title: "Clean house")
biggie.tasks.create(title: "Vaccuum")
biggie.tasks.create(title: "Wash Windows")
p.tasks.count # 3
p.sub_tasks.count # 2
p.big_tasks.count # 1