如何根据其关联初始化rails模型

时间:2012-05-05 13:26:44

标签: ruby-on-rails constructor many-to-many associations

我一直试图弄清楚以下内容,但还没有能够提出整洁的解决方案。也许我错过了一些基本的东西。

概述

我有一个多对多的任务和用户模型。

一个用户可以拥有许多任务,并且许多用户可以共享一个任务。

我使用以下方法创建任务:

user.tasks.create

任务通过user_id与用户链接,user_id使用task_id与任务链接,使用:through task_table

任务属于用户,但一旦完成,就会传递给该任务的下一个用户。

问题

总是如此,对于创建任务的用户来说,轮到他完成任务了。完成后,它将传递给下一个用户。

我目前有:

  user1.tasks.create(:current_user => user1.id)

当用户完成任务时,:current_user更改。

我想要实现的是一种只需编写user1.tasks.create的方法 - 并自动设置current_user,而无需显式传入user1.id。有什么方法可以做到这一点吗?也许使用一个构造函数(我已经尝试了所有这些,但是无法工作)。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试在关联的before_add回调中执行此操作,例如

class User < ActiveRecord::Base
  has_many :tasks, :through => :task_table, :before_add => Proc.new { |u,t| t.current_user = u }
end