Rails ActiveRecord has_many问题

时间:2013-07-24 10:48:24

标签: activerecord ruby-on-rails-4

我有一个有很多任务的用户。这是一组预定义的任务。每个任务都有一个需要完成的任务要求列表才能完成任务。我已经建立了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.访问它们的最佳方式是什么?

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

再次感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

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