1

我有一个有很多任务的用户。这是一组预定义的任务。每个任务都有一个要求列表,这些要求需要完成才能完成任务。我已经建立了2个has_many through关系。这是我的代码。

class User < ActiveRecord::Base
  has_many :user_tasks
  has_many :tasks, through: :user_tasks
end

class UserTask < ActiveRecord::Base
  belongs_to :user
  belongs_to :task
end

class Task < ActiveRecord::Base
  has_many :user_tasks
  has_many :users, through: :user_tasks
  has_many :task_requirements
  has_many :requirements, through: :task_requirements
end

class TaskRequirement < ActiveRecord::Base
  belongs_to :task
  belongs_to :requirement
end

class Requirement < ActiveRecord::Base
  has_many :task_requirements
  has_many :requirements, through: :tasks
end

这部分看起来相当简单,但现在我想捕获每个需求完成的日期以及每个需求是否完成的布尔值User。我最初试图把它放在TaskRequirement表中,但当然它是为所有用户更新的,这不是我想要的行为。所以我有2个问题。1. 我把这些字段放在哪里?2. 访问它们的最佳方式是什么?

我假设他们将进入连接表,但没有简单的方法可以访问连接表中的信息。

再次感谢所有帮助。

4

1 回答 1

0

如果每个用户独立完成任务需求而其他用户是否已完成任务,那么您需要一个 UserRequirement 表来存储相关的数据项——布尔值和完成日期。

但是,如果每个需求必须由每个用户完成多次,每次与其关联的任务完成一次,那么您需要在 User 和 TaskRequirement 或 UserTask 和 Requirement 或 User 和 Task 和 Requirement 之间进行连接。

于 2013-07-25T21:47:33.177 回答