复杂 Rails 协会

Complex Rails Association

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

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

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

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

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

如果我没记错的话,听起来您需要加入 table。然后你声明你的记录有一个关系:通过连接 table.

例子

您有一个名为 table 的连接:user_lists 它将包含 3 条数据 (id, user_id, list_id)

所以每次用户有一个列表时,您都会在此 table 上创建一条记录。

然后在你的用户模型中

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

如果我正确理解了您的设置,那么我希望这对您有所帮助,如果不能让我知道。

您可以在此处阅读有关协会的更多信息http://guides.rubyonrails.org/association_basics.html