[rspec-users] Weird bug in association extensions

court3nay court3nay at gmail.com
Sat May 9 05:01:07 EDT 2009


Hey all, just upgraded an older app to latest rspec and rails. This
code runs fine in console but fails under rspec.

    class User
      has_many :statuses, :extend => Status:::AssociationExtension
    end

    module Status::AssociationExtensions
      def after(status)
        find(:first, :conditions => ['statuses.created_at > ?',
status.created_at], :order => 'statuses.created_at')
      end
    end

This code works in the app and from console

    recent = @user.statuses.first
    status = @user.statuses.after(recent)

But in the spec, I get this: Weird, eh? It thinks that "self.class" ==
Array and can't find the "find" method on the array instance.  Is this
something in my code somewhere, or did something change with
association collections?

6)
NoMethodError in 'StatusesController PUT #update StatusesController
(unsuccessful save) assigns @status'
undefined method `find' for #<Class:0x2521c94>
/Users/courtenay/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/
active_record/base.rb:1964:in `method_missing_without_paginate'
/Users/courtenay/dev/entp/tt/vendor/plugins/will_paginate/lib/
will_paginate/finder.rb:164:in `method_missing'
/Users/courtenay/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/
active_record/associations/association_collection.rb:60:in `find'
/Users/courtenay/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/
active_record/associations/association_collection.rb:395:in
`find_target'
/Users/courtenay/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/
active_record/associations/association_collection.rb:349:in
`load_target'
/Users/courtenay/.gem/ruby/1.8/gems/activerecord-2.3.2/lib/
active_record/associations/association_proxy.rb:139:in `inspect'
spec/controllers/statuses_controller_spec.rb:249:
spec/controllers/statuses_controller_spec.rb:282:



More information about the rspec-users mailing list