Why not use a search plugin like thinking sphinx to do your searching for you?
On 03/02/2009, at 6:06, MaggotChild <hsomob1...@yahoo.com> wrote: > > This SystemStackError is driving me crazy. It only takes place when > testing with WEBrick - I can't reproduce it with any tests. It is > caused by calling the "missing" id method (base.rb:2435) on my > ActiveRecord class. > > WEBrick and my tests are running as the same user, with a `ulimit -s` > of 10240. Plus the query works sometimes so I don't think this > matters. > > Here's the trace: > > /usr/lib/ruby/1.8/set.rb:93:in `empty?' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > attribute_methods.rb:64:in `generated_methods?' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > attribute_methods.rb:237:in `method_missing' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > attribute_methods.rb:245:in `method_missing' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > base.rb:2435:in `hash' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > association_preload.rb:13:in `uniq' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > association_preload.rb:13:in `preload_associations' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > base.rb:1343:in `find_every' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > base.rb:536:in `find' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > association_preload.rb:254:in `find_associated_records' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > association_preload.rb:154:in `preload_has_many_association' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > association_preload.rb:40:in `send' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > association_preload.rb:40:in `preload_one_association' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > association_preload.rb:38:in `each' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > association_preload.rb:38:in `preload_one_association' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > association_preload.rb:17:in `preload_associations' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > association_preload.rb:16:in `preload_associations' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > association_preload.rb:16:in `each' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > association_preload.rb:16:in `preload_associations' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > base.rb:1343:in `find_every' > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > base.rb:536:in `find' > app/models/package.rb:29:in `search' > > > The thing is, sometimes it works -at first. And usually results in the > trace ending before Set.empty? > at: > /usr/lib/ruby/gems/1.8/gems/activerecord-2.1.0/lib/active_record/ > attribute_methods.rb:64:in > > Here's the relevant parts of my code: > > class Package < ActiveRecord::Base > has_many :deliveries, #,:select=>'id, user, host, delivered, > region_id, package_id', > :include=>:region, > :dependent=>:delete_all > > def self.search(criteria) > raise ArgumentError, 'argument must be of type SearchCriteria' > unless criteria.is_a\ > ?(SearchCriteria) > clause = build_search_where_clause(criteria) > find(:all, :include=>[:deliveries], :conditions=>clause) > end > end > > class Delivery < ActiveRecord::Base > belongs_to :package > belongs_to :region > end > > class Region < ActiveRecord::Base > has_many :deliveries > end > > Looking at the SQL output, the exception is occurring after > the :deliveries relation is queried. > At first I though it was because I left out the id field from the > has_many :deliveries, :select=>'...' > But I commented it out and still no luck. > > Any suggestions/ideas are greatly appreciated. > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---