我正在进行嵌套搜索,虽然它总是返回正确的信息,但它会返回每个条目的三个副本!!
我想根据用户名,用户名,爱好或某种爱好来搜索我的用户。每个用户都有零,一个或多个爱好。
这是我的疑问:
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
如果我按照爱好名称或爱好类型进行搜索,我会得到正确答案。
但如果我按用户名或名字搜索,我会得到同一个条目的三个克隆!为什么这样做?
答案 0 :(得分:0)
您应该使用includes
代替joins
。
includes
进行 LEFT OUTER JOIN ,而joins
进行 INNER JOIN 。