Regarding queries across relationships

Hi, I'm sending this message again due to the migrationof the list..

I'm trying to build a query that looks like this:

     @book_pages, @books = paginate(:books,
                                                :per_page => 20,
                                                :conditions => ['book.author.name like ?', '%jim%],
                                                :order_by => @sort_order)

I want to basically list out all the books by authors with names like 'jim' - prefer to have this paginated so that I can use my basic paginated list view. However, this throws up an exception:

Mysql::Error: Unknown table 'books' in where clause: SELECT count(*) AS count_all FROM books WHERE (author.name like '%ha%')

My models:
authors have_many books
book belongs_to author

I'm sorry I seem very confused about how to do the query. I'd appreciate help!

What do you think I'm doing wrong?
Thanks
Mohit.

Mohit Sindhwani wrote:

Hi, I'm sending this message again due to the migrationof the list..

I'm trying to build a query that looks like this:

     @book_pages, @books = paginate(:books,
                                                :per_page => 20,
                                                :conditions =>
['book.author.name like ?', '%jim%],
                                                :order_by => @sort_order)

hi,
I'm working on a book app to !
thats how it should look like :
--->> paginate(:book, :include=>[:author], ...,
:conditions=>["authors.name like ?", '%jim%'])
the include statement operates a join in the sql query. See eager
loading for more explanations.

charlysisto@gmail.com wrote:

Mohit Sindhwani wrote:
  

Hi, I'm sending this message again due to the migrationof the list..

I'm trying to build a query that looks like this:

     @book_pages, @books = paginate(:books,
                                                :per_page => 20,
                                                :conditions =>
['book.author.name like ?', '%jim%],
                                                :order_by => @sort_order)

hi,
I'm working on a book app to !
thats how it should look like :
--->> paginate(:book, :include=>[:author], ..., :conditions=>["authors
like ?", '%jim%'])
the include statement operates a join in the sql query. See eager
loading for more explanations.
  
Thanks! I actually _just_ figured that out and was going to mail out a reply to my own post.

I guess my confusion came from the fact that I had not found a good example of a join query. Also, the impression that I had got from somewhere was that ":include" is used to load all the data in a single query (which stuck in my mind as an 'optimization' rather than a must-do). My rules for optimization require me to do that only at the end. Hence, it was failing.. but I understand now!

Thanks again & sorry for the bother. :slight_smile:
Cheers
Mohit.