我有一个连接表,将项目连接到具有多对多关系的标签。我正在尝试对所有项目进行分页视图,如果进行搜索,将包含名称或标记名称匹配的所有项目。
当我这样做时:
search = "one"
Item.all(:conditions=>["items.name LIKE ?", "%#{search}%"]);
我得到的结果项目中包含单词“one”。
然后当我这样做时:
search = "one"
Item.all(:joins=>[:tags], :conditions=>["items.name LIKE ?", "%#{search}%"]);
我得到一个空集。
为什么活动记录给我一个空集而不是仍然给我一个符合条件的结果?我怎样才能得到我想要的结果?
答案 0 :(得分:0)
想出来。如果我的查询所需的内容为:joins=>[:tags]
,则INNER JOIN
默认为OUTER JOIN
。我的问题的解决方案是
search = "one"
Item.all(
:joins=>['LEFT OUTER JOIN "tags_items" ON "tags_items"."webservice_id" = "webservices"."id" LEFT OUTER JOIN "tags" ON "tags"."id" = "tags_items"."tag_id"'],
:conditions=>["items.name LIKE ?", "%#{search}%"]
)