0

我有三个模型,分别是用户、域和关联。我的用户模型是从设计中填充的。My Domain 模型由“人们的兴趣,例如 - 跑步、骑自行车等”组成。我的关联表将 user_id 链接到 domain_id 并将其存储为记录。当我添加一个域时,它会自动使用域填充用户注册表单(用户可以在其中选择,例如我喜欢运行)。

我的查询是.. 我可以使用什么活动记录查询来拉动具有相似兴趣的用户,例如与当前登录的用户一起运行。因此,如果一个名为 Tom 的用户已登录并且选择了跑步和骑自行车(链接到)的域兴趣,我怎么能与具有相似域(兴趣)的其他用户一起拉回数据库对象

所以基本上如果 Tom、Paul 和 Steph 是用户,但 Tom 和 Paul 选择了相同的域,而 Steph 选择了不同的域,那么执行此操作的查询代码是什么?希望这是足够的信息。

4

1 回答 1

1

我认为你可以这样做:

User.joins(:domains).where("domains.id IN (?)", current_user.domains.pluck(:domain_id)) 

current_user.domains.pluck(:domain_id)收集 current_user 选择的所有域 id。Pluck 仅在 rails 3.2 中,如果您使用的是早期版本,则必须使用 collect 代替。

然后查询的第一部分选择也将该域作为他们的兴趣之一的用户。

您应该按照 Bongs 的建议查看 rails 指南 http://guides.rubyonrails.org/association_basics.html

于 2012-06-14T10:12:28.660 回答