当我使用可以有多个值的条件在模型中搜索时如何有效地查询?

时间:2013-08-31 07:09:54

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 query-performance

我有两个模型UserType。每个用户可以有多种类型。请考虑以下示例

sample_user(user)
  ----> football player(type)
  ----> actor(type)
  ----> buisness-man(type)

并且类似地存在多个用户及其类型。还有另一个名为Like的模型。类似的模型包含他最喜欢的类型。它甚至可以是他自己的类型或者他没有的其他类型。考虑一个例子

sample_user(user)
  ----> cricketer(like)
  ----> actress(like)
  ----> buisness-man(like)

现在我要做的是,sample_user有3个喜欢,我想将sample_user的喜欢与其他用户的类型进行比较,如果有任何一个sample_user匹配的话与任何其他类型的其他用户,然后我必须获取该用户。那我怎么能这样做呢。请帮我。我认为如果查询效率不高,这需要一些时间。所以请帮帮我。对不起,如果问题不清楚。任何帮助是极大的赞赏。

1 个答案:

答案 0 :(得分:0)

仅使用SQL查询无法做到这一点。你可以做这样的事情

user1_likes = sample_user1.likes.pluck(:title)
user2_likes = sample_user2.likes.pluck(:title)

result = user1_likes & user2_likes

fetch user2 if result.present?