我一直试图弄清楚以下内容,但还没有能够提出整洁的解决方案。也许我错过了一些基本的东西。
概述
我有一个多对多的任务和用户模型。
一个用户可以拥有许多任务,并且许多用户可以共享一个任务。
我使用以下方法创建任务:
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。有什么方法可以做到这一点吗?也许使用一个构造函数(我已经尝试了所有这些,但是无法工作)。
谢谢!
答案 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