Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails ActiveRecord有很多问题_Activerecord_Ruby On Rails 4 - Fatal编程技术网

Rails ActiveRecord有很多问题

Rails ActiveRecord有很多问题,activerecord,ruby-on-rails-4,Activerecord,Ruby On Rails 4,我有一个用户有很多任务。这是一组预定义的任务。每个任务都有一个要完成的任务所需完成的需求列表。我已经建立了两个或多个关系。这是我的密码 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 en

我有一个用户有很多任务。这是一组预定义的任务。每个任务都有一个要完成的任务所需完成的需求列表。我已经建立了两个或多个关系。这是我的密码

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

我假设它们将放在联接表中,但是没有简单的方法可以访问联接表中的信息


再次感谢您的帮助。

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


但是,如果每个需求必须由每个用户多次完成,每个与之相关联的任务完成一次,那么您需要在用户和TaskRequirement、UserTask和requirement、user和task和requirement之间建立连接。

在requirement下,has\u many:requirements,to::tasks应该是has\u many:tasks,通过::任务需求。别忘了你的反向联想。