2010-08-23 60 views
0

我有以下的關聯:Searchlogic對協會

class BookShelf { 
    has_many :books 
} 

class Book { 
    has_many :pages 
    belongs_to :book_shelf 
} 

class Page { 
    belongs_to :book 
} 

如果我有一個書架的對象,我怎麼會用searchlogic搜索屬於當前書架的書頁?

目前我使用這一個:

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

所以PAGINATE部分只是使用will_paginate的是不是真的relavent。

重點是我認爲這些代碼行有點難看。有什麼改進嗎?

回答

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) 

這似乎是伎倆。