ruby und mySQL < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 09:26 Do 08.03.2012 | Autor: | Stoecki |
Hallo zusammen,
ich habe mal wieder eine recht spezielle Frage und hoffe, dass mir wer weiterhelfen kann. es geht um das on_duplicate_key_update in mySQL. Soweit wie ich diese operation verstehe, überschreibt sie im falle eines meherer schnell aufeinander folgender updates einen bestehenden eintrag in einer datenbank, insofern der unique bzgl eines keys sein soll. beispiel. es wird ein objekt gespeichert. noch bevor der speichervorgang abgeschlossen ist wird das selbe objekt erneut in die datenbank geschickt. anstatt nun einen fehler zu werfen, wird der erste eintrag einfach überschrieben. soweit richtig?
ich habe nun versucht das ganze in meiner ruby-app zu implementieren. hier der code
@users = @program.users.build(olduser)
User.import(@users, :on_duplicate_key_update => [:position])
@users = @progam.users.new(newuser)
User.import(@users.select{|u| !u.persisted?})
wir haben hier also zwei datenbanktabellen User und Program. Die Relation zwischen diesen Tabellen ist User belongs_to Program und Program has_many User
Im Falle eines Updates wird nur die position des Users verändert (nicht der name, der als key verwendet wird. olduser und newuser sind arrays of hashes, wobei ein hash die form {:name = xy, :position = z} hat.
mein problem ist, dass in der zweiten zeile kein update durchgeführt wird. weiß jemand wie der code an der stelle richtig heißen müsste?
gruß bernhard
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:20 Fr 16.03.2012 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|