Has_one :through doesn't work in Rails 2.2.2


#1

I followed the steps in the following link literally in a new Rails
2.2.2 project
http://ryandaigle.com/articles/2008/3/24/what-s-new-in-edge-rails-has-one-through

Then I ran it in script/console, getting these error (actually I got
same error in another big rails project before I read that link):

NoMethodError: undefined method update_attributes' for #<Class: 0xb7069980> from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ active_record/base.rb:1833:inmethod_missing’
from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/
active_record/associations/association_collection.rb:370:in send' from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ active_record/associations/association_collection.rb:370:inmethod_missing’
from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/
active_record/base.rb:2003:in with_scope' from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ active_record/associations/association_proxy.rb:202:insend’
from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/
active_record/associations/association_proxy.rb:202:in with_scope' from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ active_record/associations/association_collection.rb:366:inmethod_missing’
from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/
active_record/associations/has_one_through_association.rb:11:in
create_through_record' from /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/ active_record/associations.rb:1273:inmagazine=’
from (irb):4


#2

I simply copied the code in that link, and in the associated table there
were only needed fields to establish the relations.

Regards,
林中鹏

On Sun, Jan 4, 2009 at 8:19 PM, Frederick C.
<removed_email_address@domain.invalid


#3

Maybe your defined rails version in environment.rb is not 2.2.2?


#4

I was having the same issue as Clive trying to test the referenced
example
I was able to get some functionality by using :has_one subscription
rather than :has_many.

I do have a question though.

I can set the through association like this

user=User.create(:name=>“Bob”)
m=Magazine.create(:name=>‘test’)
user.magazine=m
then user.subscription will = #<Subscription id: 1, user_id: 1,
magazine_id: 1…>

However,
using user.update_attributes(:magazine=>m)
the return is true, but there is no association created. Subscription
remains nil.

Am I wrong in assuming that I should be able to do this?