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

时间:2012-07-26 04:12:33

标签: ruby-on-rails activerecord crud database-schema

我有3个模型/表:User,Task和TaskInstance。 Task表就像一个主要的任务列表,没有耦合到任何特定用户,而TaskInstance表包含指示用户完成特定任务的记录。换句话说,TaskInstance具有用户ID,任务ID和状态布尔值。用户有许多TaskInstances。用户不共享TaskInstances,他们每个人都有自己的集合。

当用户首次在网站上注册帐户时,我想要为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方法中的内容。如何遍历Task表中的每个记录并为每个记录创建一个TaskInstance,然后确保TaskInstances的集合保存到用户的task_instances字段?

我知道这非常简单,但这是我第一次涉足Rails。

1 个答案:

答案 0 :(得分:1)

我认为这是一个解决方案

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