获取其他一些物品的所有物品

时间:2011-03-03 01:25:37

标签: ruby-on-rails ruby ruby-on-rails-3

我举一个例子:

Books.find(THIS_FIND_MAY_GET_MORE_THAN_ONE_BOOK).pages.all

我期待一组页面...返回的每个页面都应该包含在至少一本书中。否则它不应该在集合中。我怎么能得到这样的一套?

我的直观想法是循环遍历书籍,然后每次都添加,但我想可能有更快的方式(数据库方式),因为我对书籍不感兴趣。我不想引入进一步的数据库链接,因为我认为它们可能会导致数据库不一致。

有什么建议吗?谢谢!

3 个答案:

答案 0 :(得分:2)

获取每本书的所有页面......

books=Books.find(:all) 

...会给你一系列的书。然后你可以遍历每本书来获取它的页面......

books.each do |book|
   puts book.pages
end

这假设您已经设置了书籍和页面之间的关系,其中每本书都有很多页面,每个页面都属于一本书。

答案 1 :(得分:0)

我不确定你真正想要做什么,但是因为你想要页面而不是书籍,为什么不使用Page.find_by_book_id或者你想要的任何其他东西,并传递一个带有书籍ID的数组。 / p>

如果这不是您真正想要的,请您提供一些您想要实现的信息?也许一个范围可以为你工作,也许你可以写一些更多的信息,以便我可以进一步帮助你。

答案 2 :(得分:-1)

我想这就是你想要的:

pages = Page.where("book_id is not NULL")