Activerecord加入语法。 Square Brackets vs Curly Brackets?

时间:2016-11-29 17:26:11

标签: activerecord

这是来自Rails文档:

  

12.1.3.2加入嵌套关联(多级)

for(i = 0; i < size-2; i++) {
   for (j = i+1; j < size-1; j++) {
       for (k = j+1; k < size; k++) {
       /* Check if the sum of current triplets
       is equal to "K" */
           if(array[i] + array[j] + array[k] == K) {
             printf("Triplet Found : %d, %d, %d\n", array[i], array[j], array[k]);
             return 1;
           }           
       }
   }
}
/* No triplet found whose sum is equal to K */
return 0;}
  

这会产生:

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

或者,用英语:“返回所有有文章的类别,这些文章都有客人发表的评论,这些文章也有标签。”

所以一切都有道理。但是如何在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.article_id = articles.id

如何将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 加入tags。在英语中,我想要:

  

“返回所有包含文章的类别,其中这些文章包含来自访客的评论,以及这些评论还有标记的位置。”

更重要的是,想到卷曲与方括号的好方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为这是你正在寻找的东西:

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

将花括号(哈希)视为连接表的嵌套条件。可以将方括号(数组)视为连接多个表的方法。