2015-02-11 75 views
1

我有一个ActiveRecord查询,我需要帮助。如何从嵌套activerecord集合中获取所有记录

假设我们有一个用户,他有多个库。每个图书馆都有很多收藏。在每一个收藏中,他都有很多书。

如何获得他所有书籍的清单?

我知道我可以做libraries.each |库| library.collections.each do | collections | collection.books.each do | book |书籍< < book.title

,但我希望有一个更简单的方法,那么这个。

+0

您正在寻找'的has_many through'使用轨道的has_many。有关示例,请参阅[这里](http://stackoverflow.com/questions/2512522/has-many-inheritance)。 – ptd 2015-02-11 16:00:26

回答

0

您可以通过它

class User 
    has_many :libraries 
    has_many :collections, through: :libraries 
    has_many :books, -> { uniq }, through: :collections 
end 

然后,你可以简单地查询

@user = User.first 
@user_books = @user.books 
相关问题