复杂导轨协会

问题描述:

不确定which association最适合我想要的。基本上它是一个待办事项列表。该列表是一项任务,该任务有许多用户。复杂导轨协会

即:挖一个洞,种植一些种子。挖一个洞将需要两个或更多的人。吉姆和乔正在挖这个洞,乔会种下种子。所以要完成两个列表,第一个由两个用户完成,另一个由另一个完成。两个用户都可以根据需要完成这两个列表

  • TODO:有许多名单
  • 列表:属于待办事项
  • 列表:拥有众多用户
  • 用户:有许多名单

如果我不是清楚,每个任务(名单)在todo上可以由任何用户完成。我很难看到在用户表上放置list_id的位置。这是不可能的,因为该用户可以同时做另一个(列表)。我不知道through: :association是如何进场的。

User.first.lists #= [] 
Todo.first.lists.first.users #= [] 

我什么也没得到,因为user_id需要去某个地方。

+1

你有许多一对多的关系..你解决不了,通过在用户表把LIST_ID你需要创建一个关联(结)表解决。有关示例,请参阅http://*.com/questions/497395/resolve-many-to-many-relationship。 – David

+0

嗨大卫。我也会在那里看一看。谢谢 – Sylar

如果我没有弄错,这听起来像你需要一个连接表。然后通过连接表声明您的记录具有关系:

你调用一个连接表:user_lists其中将包含每一个用户列表,你对这个表创建一个记录时间的3个数据(ID,USER_ID,LIST_ID)

所以。

然后在你的用户模型

class User < ActiveRecord::Base 
    has_many :lists, :through => :user_lists 
end 

如果我明白你的设置正确,那么我希望这会有所帮助,如果不是让我知道。

您可以在此处详细了解协会http://guides.rubyonrails.org/association_basics.html

+0

这响铃。我稍后会确认你的答案。谢谢。 – Sylar

+0

那么'list.rb'中有什么?任何'has_many'?你也说过“在你的用户模型中”你有'班级课程......'你的意思是'班级用户...'? – Sylar

+0

对不起,复制粘贴错误:P我会编辑 – Brad