复杂导轨协会
问题描述:
不确定which association最适合我想要的。基本上它是一个待办事项列表。该列表是一项任务,该任务有许多用户。复杂导轨协会
即:挖一个洞,种植一些种子。挖一个洞将需要两个或更多的人。吉姆和乔正在挖这个洞,乔会种下种子。所以要完成两个列表,第一个由两个用户完成,另一个由另一个完成。两个用户都可以根据需要完成这两个列表
- TODO:有许多名单
- 列表:属于待办事项
- 列表:拥有众多用户
- 用户:有许多名单
如果我不是清楚,每个任务(名单)在todo上可以由任何用户完成。我很难看到在用户表上放置list_id
的位置。这是不可能的,因为该用户可以同时做另一个(列表)。我不知道through: :association
是如何进场的。
User.first.lists #= []
Todo.first.lists.first.users #= []
我什么也没得到,因为user_id
需要去某个地方。
答
如果我没有弄错,这听起来像你需要一个连接表。然后通过连接表声明您的记录具有关系:
例
你调用一个连接表: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
你有许多一对多的关系..你解决不了,通过在用户表把LIST_ID你需要创建一个关联(结)表解决。有关示例,请参阅http://*.com/questions/497395/resolve-many-to-many-relationship。 – David
嗨大卫。我也会在那里看一看。谢谢 – Sylar