我有三个模型,分别是User,Domain和Association。我的用户模型是从设计中填充的。我的领域模型包括“人们的兴趣,如 - 跑步,骑自行车等”。我的关联表将user_id链接到domain_id并将其存储为记录。当我添加一个域时,它会自动填充用户注册表单(用户可以选择,例如我喜欢运行)。
我的查询是..我可以使用什么活动记录查询来提取具有相似兴趣的用户,例如与当前登录的用户一起运行。因此,如果一个名为Tom的用户登录并选择了运行和自行车(链接到)的域兴趣,我怎样才能与具有相似域名(兴趣)的其他用户一起撤回数据库对象
所以基本上如果Tom,Paul和Steph是用户,但是Tom和Paul选择了相同的域名,而Steph选择了不同的域名,那么查询代码是什么?希望这是足够的信息。
答案 0 :(得分: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建议的导轨指南 http://guides.rubyonrails.org/association_basics.html