2016-11-29 37 views
0

這是從軌道文檔:Activerecord加入語法。方形托架與卷邊托架?

12.1.3.2加入嵌套協會(多級別)

Category.joins(articles: [{ comments: :guest }, :tags]) 

這產生:

SELECT categories.* FROM categories 
    INNER JOIN articles ON articles.category_id = categories.id 
    INNER JOIN comments ON comments.article_id = articles.id 
    INNER JOIN guests ON guests.comment_id = comments.id 
    INNER JOIN tags ON tags.article_id = articles.id 

或者,我n英語:「返回所有包含文章的類別,這些文章有客人評論,以及那些文章也有標籤。」

這樣一切都有道理。但是,如何在我的ActiveRecord得到這個SQL:

SELECT categories.* FROM categories 
     INNER JOIN articles ON articles.category_id = categories.id 
     INNER JOIN comments ON comments.article_id = articles.id 
     INNER JOIN guests ON guests.comment_id = comments.id 
     INNER JOIN tags ON tags.comments_id = comments.id 

如何加入tagscomments。在英語中,我想要:

「返回所有包含文章的類別,其中這些文章具有來賓所做的評論,並且這些評論也包含標籤。」

更重要的是,什麼是考慮捲曲與方括號的好方法?

回答

0

我認爲這是你在找什麼:大括號(哈希)作爲連接表嵌套條件的

Category.joins(articles: { comments: [:guest, :tag] }) 

思考。將方括號(數組)視爲連接多個表的手段。