1

我一直在试图弄清楚以下内容,但未能提出巧妙的解决方案。也许我错过了一些基本的东西。

概述

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

一个用户可以有多个任务,一个任务可以在多个用户之间共享。

我使用以下内容创建任务:

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。有什么办法可以做到这一点吗?也许使用构造函数(我几乎尝试了所有这些,但无法正常工作)。

谢谢!

4

1 回答 1

0

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

class User < ActiveRecord::Base
  has_many :tasks, :through => :task_table, :before_add => Proc.new { |u,t| t.current_user = u }
end
于 2012-05-07T06:49:01.220 回答