After_create and has_one association bug?


#1

Hello,

I’ve come across an issue that I’m sure is a bug when using after_create
with a has_one association, but I’m not 100% certain if I’m missing
something.

This is pretty much exactly the code I’m using. Two simple classes
(Account and Contact) and I create the contact after I create an account
(via after_create). I’m not passing in a “name” field which the contact
requires via validates_presence_of, so the contact should not get saved,
but it in fact does.

class Account < ActiveRecord::Base
has_one :contact
def after_create
create_contact
end
end

class Contact < ActiveRecord::Base
belongs_to :account
validates_presence_of :name
end

The test…

class AccountTest < ActiveSupport::TestCase
test “this ain’t right” do
a = Account.create
p a.contact
p a.new_record?
end
end

produces…

#<Contact id: 996332878, name: nil, account_id: 1, created_at:
“2009-05-25 05:40:40”, updated_at: “2009-05-25 05:40:40”>
false

Is this expected behaviour?

Thanks,
Andrew


#2

Oh, forgot to mention… rails 2.3.2


#3

On 25/05/2009, at 3:46 PM, Andrew K. wrote:

Hello,

I’ve come across an issue that I’m sure is a bug when using
after_create
with a has_one association, but I’m not 100% certain if I’m missing
something.

Perhaps you should file a bug?

http://rails.lighthouseapp.com


Blog: http://random8.zenunit.com/
Twitter: http://twitter.com/random8r
Learn: http://sensei.zenunit.com/
Latest: How to use Unix basics at http://sensei.zenunit.com/


#4

Perhaps you should file a ticket? Rails.lighthouseapp.com

Blog: http://random8.zenunit.com/
Twitter: http://twitter.com/random8r
Learn: http://sensei.zenunit.com/
New video up now at http://sensei.zenunit.com/ real fastcgi rails
deploy process! Check it out now!

On 25/05/2009, at 3:46 PM, Andrew K.
<removed_email_address@domain.invalid


#5

It’s not correct behavior, but it wasn’t caught before 2.3.2 went
out the door. It’s been fixed in edge - more details at
https://rails.lighthouseapp.com/projects/8994/tickets/2249

–Matt J.

On May 25, 1:46 am, Andrew K. removed_email_address@domain.invalid