ruby-on-rails – Ruby / Rails Collection to Collection

我有一个连接表连接的两个表 – 这只是伪代码
Library
Book
LibraryBooks

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

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

我刚在想:

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

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

解决方法

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

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

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

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...