Assoziierte Objekte werden nicht abgespeichert

Hallo,

wir haben ein Problem, das die assoziierte Objekte nur abgespeichert
werden
wenn das parent Objekt noch nicht in der Datenbank vorhanden ist. Unter
Rails 1.1.6 ging dies noch.

Modelle:
class Father < ActiveRecord::Base
has_one :son
End

class Son < ActiveRecord::Base
belongs_to :father
end

Wenn ich das Father Objekt vorher nicht speichere geht es:

f = Father.new
=> #<Father:0x3411780 @new_record=true, @attributes={“name”=>nil}>

f.name = “ralf”
=> “ralf”

f.son = Son.new
=> #<Son:0x330150c @new_record=true, @attributes={“father_id”=>nil,
“age”=>nil}>

f.son.age = 99
=> 99

f.save
=> true

f.reload.son.age
=> 99

Wenn ich das Father Objekt vorher speichere geht es nicht:

e = Father.new
=> #<Father:0x32f2fc0 @new_record=true, @attributes={“name”=>nil}>

e.name = “micha”
=> “micha”

e.save
=> true

e.son = Son.new
=> #<Son:0x32ed82c @errors=#<ActiveRecord::Errors:0x32ec774 @errors={},
@base=#<Son:0x32ed82c …>>, @new_record=false,
@attributes={“father_id”=>2,
“id”=>2, “age”=>nil}>

e.son.age =88
=> 88

e.save
=> true

e.reload.son.age
=> nil

Ist das ein Bug, oder habe ich ein Verständnisproblem.

Bin über jeden Tipp Dankbar!!!

Herzliche
Grüße,Michael

Moin Michael,

probiere mal

f = Father.create
f.name = ‘father’
f.create_son(:age => 88)
s = f.son
puts s.age

Gruß
Jan

Am 09.10.07 schrieb Michael V. [email protected]:

has_one :son
=> “ralf”

@attributes={“father_id”=>2,
Ist das ein Bug, oder habe ich ein Verständnisproblem.


Jan P.
Rechtsanwalt

Grünebergstraße 38
22763 Hamburg
Tel +49 (0)40 41265809 Fax +49 (0)40 380178-73022
Mobil +49 (0)171 3516667
http://www.inviado.de

Hallo Jan,

das was Du mir geschickt hast geht zwar, aber ob das meine Lösung ist
weis
ich noch nicht. Da ich da sehr viel an der Applikation ändern müsste.
Aktuell habe ich das Problem das dadurch fast alles Test nicht Laufen.
Da
wir manche Objekte aus den Test in die Session laden und diese dann im
Controller verändert werden und dann man ende ein save aufgerufen wird,
hier
ist auch wieder das Problem da das Fixure auch schon in der Db vorhanden
ist, somit speichert er beim Aufruf von SAVE die assoziierten Objekte
nicht
mit.

Folgendes würde auch gehen:
F = Fahter.new
F.name = ³test²
F.save
F.son = Son.new
F.son.age = 44
F.son.save

Das ist aber alles irgendwie unschön, oder habe ich einfach keine andere
Möglichkeit?

Habt Ihr noch eine Idee?

Herzliche Grüße,
Michael

Am 09.10.2007 17:41 Uhr schrieb “Jan P.” unter [email protected]: