Activerecord 连接表上的Rails条件查询

Activerecord 连接表上的Rails条件查询,activerecord,ruby-on-rails-3.2,Activerecord,Ruby On Rails 3.2,我有一个连接表,将项目连接到具有多对多关系的标记。我正在尝试对所有项目进行分页查看,如果进行搜索,将包括名称或标记名称匹配的所有项目 当我这样做时: search = "one" Item.all(:conditions=>["items.name LIKE ?", "%#{search}%"]); 我得到了一个包含单词“一”的结果项 那么当我这样做的时候: search = "one" Item.all(:joins=>[:tags], :cond

我有一个连接表,将项目连接到具有多对多关系的标记。我正在尝试对所有项目进行分页查看,如果进行搜索,将包括名称或标记名称匹配的所有项目

当我这样做时:

    search = "one"
    Item.all(:conditions=>["items.name LIKE ?", "%#{search}%"]);
我得到了一个包含单词“一”的结果项

那么当我这样做的时候:

    search = "one"
    Item.all(:joins=>[:tags], :conditions=>["items.name LIKE ?", "%#{search}%"]);
我有一套空的


为什么活动记录给我一个空集,而不是仍然给我一个匹配条件的结果?我怎样才能得到我想要的结果呢?

我想出来了。当我的查询需要一个
外部连接时,
:joins=>[:tags]
默认做一个
内部连接
。解决我问题的办法是

    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}%"]
    )