Hi guys, I'm having a problem with a belongs_to relationship. The thing is: class Banner < ActiveRecord::Base belongs_to :campaign ... end --------------------------------------------------- class Campaign < ActiveRecord::Base has_one :banner, :dependent => :destroy accepts_nested_attributes_for :banner ... end --------------------------------------------------- If I do: campaign.update_attribute(:banner_attributes, {:content => "Changed"}) campaign.banner.id is incremented by one, asi if a new instance is being created.
Also, if I do: campaign.update_attributes({:banner_attributes, {:content => "Changed"}}) campaign.banner.id is nil. Any ideas? This is my rspec. ------------------- it "should not change banner id when banner updated" do Advertiser = mock advertiser = mock Advertiser.stub!(:find).and_return(advertiser) advertiser.stub!(:id).and_return(1) advertiser.stub!(:new_record?).and_return(false) advertiser.stub!(:destroyed?).and_return(false) banner = Banner.create(:content => "Some content", :deep_link => "http://test.com") banner.should be_valid campaign = Campaign.create(:advertiser_id => advertiser.id, :banner_id => banner.id, :website_code => "test") campaign.banner = banner campaign.banner.id.should == banner.id campaign.update_attribute(:banner_attributes, {:content => "Changed"}) campaign.banner.content.should == "Changed" campaign.banner.id.should == banner.id end -------- This is the output for the update_attribute case: [leona...@anarchie app_core]$ rspec spec/campaign_spec.rb -d ......F Failures: 1) Campaign should not change banner id when banner updated Failure/Error: campaign.banner.id.should == banner.id expected: 36, got: 37 (using ==) # ./spec/campaign_spec.rb:93 Finished in 0.23597 seconds 7 examples, 1 failure ------------------------------------------------------------------- And this is the output for the update_attributes case: [leona...@anarchie app_core]$ rspec spec/campaign_spec.rb -d ......F Failures: 1) Campaign should not change banner id when banner updated Failure/Error: campaign.banner.id.should == banner.id expected: 38, got: nil (using ==) # ./spec/campaign_spec.rb:93 Finished in 0.20556 seconds 7 examples, 1 failure ---------------------------------------------------------------------------- Any thoughts? Thanks a lot in advance! -- Leonardo Mateo. There's no place like ~ -- 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-t...@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.