0

我有以下关联:

class BookShelf {
  has_many :books
}

class Book {
  has_many :pages
  belongs_to :book_shelf
}

class Page {
  belongs_to :book
}

如果我有一个 BookShelf 对象,我如何使用 searchlogic 搜索属于当前书架中书籍的页面?

目前我正在使用这个:

@bookshelf = BookShelf.find 1
@pages = Page.title_like("something").book_id_equals(@bookshelf.books.map { |book| book.id }).paginate :page => params[:page]

所以分页部分只是使用 will_paginate 这并不是真正相关的。

关键是我认为这些代码行有些难看。有什么改进吗?

4

1 回答 1

1

这应该可以解决问题,并且无需将所有书籍 id 映射到数组中:

Page.title_like("something").book_bookshelf_id_equals(@bookshelf.id).paginate(:page => params[:page])

我在我的一个应用程序中对其进行了测试,其中我有一个类似的模型结构(郊区 -> 地区 -> 州),使用以下内容:

Suburb.name_like("east").region_state_name_like("vi").paginate(:page => 3)

这似乎奏效了。

于 2010-08-24T00:43:09.930 回答