Sorry for the above e-mail, reply to all by accident :p 2011/10/10 Cláudio Forain <[email protected]>: > Resolvi o problema da busca. Testa lá em materials na porta 3007. Só a > preciss de 2 coisas agora: ajeitar o data picker e tirar aquelas opcoes da > busca. Abs > > On Oct 9, 2011 9:02 PM, "Claudio Forain" <[email protected]> wrote: >> >> Hi. Im using Rails 3.0.9 and Activescaffold with JQuery. >> As I read about this here: >> >> http://groups.google.com/group/activescaffold/browse_thread/thread/d96173c2eee1a6?tvc=2&q=+search+second >> >> And Here: >> https://github.com/activescaffold/active_scaffold/wiki/Search-on-second-order-association >> >> As I tried to do a second order field search, I will tell you my >> problem: >> >> I have 3 models: Document, Course and Material: >> >> class Document < ActiveRecord::Base >> belongs_to :course >> [...] >> >> class Material < ActiveRecord::Base >> belongs_to :document >> delegate :course, :to => :document, :allow_nil => true >> [...] >> >> class Course < ActiveRecord::Base >> has_many :documents >> [...] >> >> >> As you can see , Material belongs_to Document belongs_to Course >> All I wanted to do is to search a material for something like: >> material.document.course.name (in a active record way) >> >> I read about second order search on the links at the beginning of this >> e-mail, and did the following: >> >> Put the following line in app/models/material.rb >> delegate :course, :to => :document, :allow_nil => true >> >> And the following in app/controllers/materials_controller.rb >> [...] >> conf.field_search.columns = [:discipline, :document_due_date, :course] >> conf.columns << :course >> conf.list.columns.add :course >> conf.columns[:course].search_sql = 'courses.name' >> conf.columns[:document].includes = {:document => :course} >> conf.columns[:course].search_ui = :string >> >> The primary problem is that when I click in courses search field and >> actually put some value in it, it returns me the following error in >> log: >> >> SQL (0.6ms) SELECT COUNT(DISTINCT `materials`.`id`) FROM >> `materials` LEFT OUTER JOIN `disciplines` ON `disciplines`.`id` = >> `materials`.`discipline_id` LEFT OUTER JOIN `documents` ON >> `documents`.`id` = `materials`.`document_id` LEFT OUTER JOIN `users` >> ON `users`.`id` = `materials`.`user_id` WHERE (((courses.name LIKE '%a >> %')) AND (disciplines.id IN >> (2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,24,25)) AND >> ((`materials`.`document_id` = '76'))) >> Mysql2::Error: Unknown column 'courses.name' in 'where clause': SELECT >> COUNT(DISTINCT `materials`.`id`) FROM `materials` LEFT OUTER JOIN >> `disciplines` ON `disciplines`.`id` = `materials`.`discipline_id` LEFT >> OUTER JOIN `documents` ON `documents`.`id` = `materials`.`document_id` >> LEFT OUTER JOIN `users` ON `users`.`id` = `materials`.`user_id` WHERE >> (((courses.name LIKE '%a%')) AND (disciplines.id IN >> (2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,24,25)) AND >> ((`materials`.`document_id` = '76'))) >> Completed 500 Internal Server Error in 446ms >> >> ActiveRecord::StatementInvalid (Mysql2::Error: Unknown column >> 'courses.name' in 'where clause': SELECT COUNT(DISTINCT >> `materials`.`id`) FROM `materials` LEFT OUTER JOIN `disciplines` ON >> `disciplines`.`id` = `materials`.`discipline_id` LEFT OUTER JOIN >> `documents` ON `documents`.`id` = `materials`.`document_id` LEFT OUTER >> JOIN `users` ON `users`.`id` = `materials`.`user_id` WHERE >> (((courses.name LIKE '%a%')) AND (disciplines.id IN >> (2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,24,25)) AND >> ((`materials`.`document_id` = '76')))): >> >> >> As you can see, the generated query calls for courses.name in a join >> that doesnt yeld that table. Am I missing something obvious here? >> >> At first, I thought that it could have something to do with >> field_search, but I also tried with the normal search and had the same >> issue. >> >> Also this way, I have a problem in list. Although I have the following >> line in app/model/course.rb >> >> def to_label >> self.name >> end >> >> Instead of having the content of the 'name' field in list, it gives me >> the instance id, something like: #<Course:0x00000003b0b640> >> I know how to correct this with a virtual column in the material model >> (something like self.document.course.name), but Im just saying, for >> the sake of completion. >> >> Any help will be greatly appreciated. Thanks in advance. >> >
-- You received this message because you are subscribed to the Google Groups "ActiveScaffold : Ruby on Rails plugin" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/activescaffold?hl=en.
