[rspec-users] Weird bug in association extensions
Scott Taylor
scott at railsnewbie.com
Sat May 9 12:56:57 EDT 2009
court3nay wrote:
> 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?
>
Personally I just always run the debugger whenever I encounter some
weird fucked up thing like this in rails. Better to know that to guess.
But, if I recall correctly, the association proxy is just an Array which
includes a ton of modules - some of which come from AR.
http://gist.github.com/10c44efda79f31fd2443
Scott
> 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:
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
More information about the rspec-users
mailing list