Hello, I am trying to use the multi_search method, but I keep getting type error on nil objects, I send it [Model1,Model2] and it seems as though the class names keep getting clobbered and turn to nil, somewhere along the multi_index area. I tried to trace what was going on, but I got nothing, also, this only happens when there are actually hits(thank god, most of the time). Perhaps some insight? Thank you! -- Posted via http://www.ruby-forum.com/.
Hi! On Mon, Oct 09, 2006 at 10:35:00AM +0200, wc wrote:> Hello, I am trying to use the multi_search method, but I keep getting > type error on nil objects, I send it [Model1,Model2] and it seems as > though the class names keep getting clobbered and turn to nil, somewhere > along the multi_index area. I tried to trace what was going on, but I > got nothing, also, this only happens when there are actually hits(thank > god, most of the time). Perhaps some insight? Thank you!a stack trace and / or some code would help in tracking this down... Jens -- webit! Gesellschaft f?r neue Medien mbH www.webit.de Dipl.-Wirtschaftsingenieur Jens Kr?mer kraemer at webit.de Schnorrstra?e 76 Tel +49 351 46766 0 D-01069 Dresden Fax +49 351 46766 66
Jens Kraemer wrote:> Hi! > > On Mon, Oct 09, 2006 at 10:35:00AM +0200, wc wrote: >> Hello, I am trying to use the multi_search method, but I keep getting >> type error on nil objects, I send it [Model1,Model2] and it seems as >> though the class names keep getting clobbered and turn to nil, somewhere >> along the multi_index area. I tried to trace what was going on, but I >> got nothing, also, this only happens when there are actually hits(thank >> god, most of the time). Perhaps some insight? Thank you! > > a stack trace and / or some code would help in tracking this down... > > Jens > > > -- > webit! Gesellschaft f?r neue Medien mbH www.webit.de > Dipl.-Wirtschaftsingenieur Jens Kr?mer kraemer at webit.de > Schnorrstra?e 76 Tel +49 351 46766 0 > D-01069 Dresden Fax +49 351 46766 66Here is the trace User.multi_search("foo",[Model1,Model2]) TypeError: nil is not a symbol from ./script/../config/../config/../vendor/plugins/acts_as_ferret/lib/class_methods.rb:412:in `const_get'' from ./script/../config/../config/../vendor/plugins/acts_as_ferret/lib/class_methods.rb:412:in `multi_search'' from ./script/../config/../config/../vendor/plugins/acts_as_ferret/lib/class_methods.rb:431:in `id_multi_search'' from ./script/../config/../config/../vendor/plugins/acts_as_ferret/lib/multi_index.rb:27:in `search_each'' from ./script/../config/../config/../vendor/plugins/acts_as_ferret/lib/class_methods.rb:428:in `id_multi_search'' from ./script/../config/../config/../vendor/plugins/acts_as_ferret/lib/class_methods.rb:411:in `multi_search'' from (irb):1 both my models call: acts_as_ferret :store_class_name => true and that is basically it, find_by_contents works great, just not multi_search Hope this helps ~wil -- Posted via http://www.ruby-forum.com/.
On Mon, Oct 09, 2006 at 11:31:47PM +0200, wc wrote: [..]> Here is the trace > User.multi_search("foo",[Model1,Model2]) > TypeError: nil is not a symbol > from > ./script/../config/../config/../vendor/plugins/acts_as_ferret/lib/class_methods.rb:412:in > `const_get''it seems your indexes don''t contain the class_name field for all your indexed objects.> both my models call: > > acts_as_ferret :store_class_name => trueyou should have all *three* models (User, Model1 and Model2) using the :store_class_name option. Then, after rebuilding your indexes, multi_search should work fine. Jens -- webit! Gesellschaft f?r neue Medien mbH www.webit.de Dipl.-Wirtschaftsingenieur Jens Kr?mer kraemer at webit.de Schnorrstra?e 76 Tel +49 351 46766 0 D-01069 Dresden Fax +49 351 46766 66
Jens Kraemer wrote:> On Mon, Oct 09, 2006 at 11:31:47PM +0200, wc wrote: > [..] >> Here is the trace >> User.multi_search("foo",[Model1,Model2]) >> TypeError: nil is not a symbol >> from >> ./script/../config/../config/../vendor/plugins/acts_as_ferret/lib/class_methods.rb:412:in >> `const_get'' > > it seems your indexes don''t contain the class_name field for all your > indexed objects. > >> both my models call: >> >> acts_as_ferret :store_class_name => true > > you should have all *three* models (User, Model1 and Model2) using the > :store_class_name option. > > Then, after rebuilding your indexes, multi_search should work fine. > > Jens > > -- > webit! Gesellschaft f?r neue Medien mbH www.webit.de > Dipl.-Wirtschaftsingenieur Jens Kr?mer kraemer at webit.de > Schnorrstra?e 76 Tel +49 351 46766 0 > D-01069 Dresden Fax +49 351 46766 66I have :store_class_name => true in all the models, and I search using model1.multi_search("foo",[Model1,Model2]) it works so long as there are no matches, but if there are matches I get the same error I previously posted about the nil object. I checked my indexes and they are create as well, for all the models I need to search -- Posted via http://www.ruby-forum.com/.
wc wrote:> Jens Kraemer wrote: >> On Mon, Oct 09, 2006 at 11:31:47PM +0200, wc wrote: >> [..] >>> Here is the trace >>> User.multi_search("foo",[Model1,Model2]) >>> TypeError: nil is not a symbol >>> from >>> ./script/../config/../config/../vendor/plugins/acts_as_ferret/lib/class_methods.rb:412:in >>> `const_get'' >> >> it seems your indexes don''t contain the class_name field for all your >> indexed objects. >> >>> both my models call: >>> >>> acts_as_ferret :store_class_name => true >> >> you should have all *three* models (User, Model1 and Model2) using the >> :store_class_name option. >> >> Then, after rebuilding your indexes, multi_search should work fine. >> >> Jens >> >> -- >> webit! Gesellschaft f?r neue Medien mbH www.webit.de >> Dipl.-Wirtschaftsingenieur Jens Kr?mer kraemer at webit.de >> Schnorrstra?e 76 Tel +49 351 46766 0 >> D-01069 Dresden Fax +49 351 46766 66 > > I have :store_class_name => true in all the models, and I search using > model1.multi_search("foo",[Model1,Model2]) it works so long as there are > no matches, but if there are matches I get the same error I previously > posted about the nil object. I checked my indexes and they are create as > well, for all the models I need to searchI also just upgraded to Ferret 0.10.11 and I am using acts_as_ferret latest stable thanks ~wil -- Posted via http://www.ruby-forum.com/.
So it seems as though :model => doc[:class_name] line 428 of class_methods.rb isn''t doing what it''s supposed to, I checked the indexes and there is in fact a class_name field being created from the acts_as_ferret :store_class_name => true, I just dont know why it isn''t being used and turns to nil in this case, again only if there is a hit is it nil -- Posted via http://www.ruby-forum.com/.
wc wrote:> > > So it seems as though :model => doc[:class_name] line 428 of > class_methods.rb isn''t doing what it''s supposed to, I checked the > indexes and there is in fact a class_name field being created from the > acts_as_ferret :store_class_name => true, I just dont know why it isn''t > being used and turns to nil in this case, again only if there is a hit > is it nilI''m starting to think it might have something to do with one of my models being a HABTM relationship setup -- Posted via http://www.ruby-forum.com/.