创建它时更新模型实例的字段? (Rails)

问题描述:

我有3个模型/表:用户,任务和TaskInstance。任务表就像任务的主要列表,不与任何特定的用户耦合,而TaskInstance表包含指示用户完成特定任务的记录。换句话说,一个TaskInstance有一个用户标识,一个任务标识和一个状态布尔值。用户有很多TaskInstances。用户不共享TaskInstances,它们都有自己的集合。创建它时更新模型实例的字段? (Rails)

当用户首次注册网站上的帐户时,我想要为User.task_instances字段填充主列表中存在的每个任务的新TaskInstance。

从我读过的内容中,我认为我必须使用before_create来做到这一点,因为它应该在用户首次保存之前更新用户。到目前为止,我有:

class User < ActiveRecord::Base 

    has_many :task_instances  

    before_create :populate_task_instances 

    private 

     def populate_task_instances 
      #something here 
     end 
end 

到目前为止,我不确定在populate_task_instances方法发生的事情。我如何遍历任务表中的每条记录并为每个记录创建一个TaskInstance,然后确保将TaskInstances的集合保存到用户的task_instances字段?

我明白这是非常微不足道的,但这是我第一次进军Rails。

这里是一个解决方案,我认为

def populate_task_instances 
    self.task_instances = Task.all.map {|task| TaskInstance.new task_id: task.id} 
end