复杂轨道协会

时间:2016-12-03 09:33:15

标签: ruby-on-rails ruby-on-rails-5

不确定which association最符合我的要求。基本上它是一个待办事项列表。该列表是一项任务,该任务有很多用户。

即:挖一个洞并种下一些种子。挖洞需要两个或更多人。 Jim和Jo正在挖洞,Jo将种下种子。所以要完成两个列表,第一个是两个用户,另一个是一个。如果需要,两个用户都可以完成两个列表。

  • Todo:有很多名单
  • 列表:属于todo
  • 列表:有很多用户
  • 用户:有很多列表

如果我不清楚,todo上的每个任务(列表)都可以由任何用户完成。我很难看到在用户表上放置list_id的位置。这是不可能的,因为该用户可以同时执行另一个(列表)。我不确定through: :association如何在这里发挥作用。

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

我没有得到任何东西,因为user_id需要去某个地方。

1 个答案:

答案 0 :(得分:2)

如果我没弄错的话,听起来你需要一个联接表。然后说明你的记录有关系:通过连接表。

实施例

你有一个名为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