当前位置:  开发笔记 > 后端 > 正文

Ruby/Rails集合到集合

如何解决《Ruby/Rails集合到集合》经验,为你挑选了1个好方法。

我有一个连接表连接的两个表 - 这只是伪代码:

Library
Book
LibraryBooks

我需要做的是,如果我有一个库的id,我想得到这个库所有书籍的所有库.

因此,如果我有图书馆1,图书馆1中有图书A和B,图书A和B在图书馆1,2和3中,那么在轨道中是否有优雅(一线)的方式?

我刚在想:

l = Library.find(1)
allLibraries = l.books.libraries

但这似乎不起作用.建议?



1> Ryan Bigg..:
l = Library.find(:all, :include => :books)
l.books.map { |b| b.library_ids }.flatten.uniq

请注意,map(&:library_ids)它比map { |b| b.library_ids }Ruby 1.8.6 慢,1.9.0更快.

我还要提一下,如果你使用:joins而不是include那里,它会在相同的查询中找到库和相关的书籍,从而加快了数据库的使用时间.:joins只有图书馆有书籍才会有用.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有