【问题标题】:Update a model instance's field upon creating it? (Rails)在创建模型实例时更新它的字段? (导轨)
【发布时间】:2012-07-26 04:12:33
【问题描述】:

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

当用户首次在网站上注册帐户时,我希望在 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。

【问题讨论】:

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


    【解决方案1】:

    这是我认为的一种解决方案

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

    【讨论】:

      猜你喜欢
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 2011-08-02
      相关资源
      最近更新 更多