Rails数据库嵌套搜索混淆

时间:2016-09-27 18:16:10

标签: sql ruby-on-rails

我正在进行嵌套搜索,虽然它总是返回正确的信息,但它会返回每个条目的三个副本!!

我想根据用户名,用户名,爱好或某种爱好来搜索我的用户。每个用户都有零,一个或多个爱好。

这是我的疑问:

def self.search(search)
  query = "%#{search}%"
  if search
    joins(:hobbies)
      .where("user_name like ? or first_name like ? or hobbies.name like ? or hobbies.type like ?", query, query, query, query)
  else
    self.all
  end
end

如果我按照爱好名称或爱好类型进行搜索,我会得到正确答案。

但如果我按用户名或名字搜索,我会得到同一个条目的三个克隆!为什么这样做?

1 个答案:

答案 0 :(得分:0)

您应该使用includes代替joins

includes进行 LEFT OUTER JOIN ,而joins进行 INNER JOIN