2012-04-13 20 views
0

Ich erstelle eine App, die sinatra + mongoid verwendet. Ich habe zwei models, Kontakt hat viele Telefone. Zu meinem sinatra Controller testen poste ich meine Daten mit diesem Befehl `sinatra + mongoid

curl -X POST -d "contact[name]=nome&contact[email][email protected]&contact[phone][0][number]=88888888&contact[phone][0][type]=1&contact[phone][2][number]=77777777&contact[phone][3][type]=1" 

aber wenn ich eine Abfrage in mongodb tat ich sehe, dass nicht wie erwartet zu speichern. Ich brauche diese Telefonklasse wird mit Array speichern, aber jetzt Telefon ist ein Hash, wo der Schlüssel ist "0", "1", N wie meine Post-Daten. Wie kann ich dieses Problem lösen? Ich möchte Daten so gespeichert werden:

{ 
"_id":"4f889875b336e722a0000003", 
"email":"[email protected]", 
"github":"diegodfsd", 
"name":"diego2", 
"phone":{ 
"0":{ 
"number":"89311768", 
"type":"cellphone" 
}, 
"1":{ 
"number":"55555555", 
"type":"home" 
} 
}, 
"twitter":"diegodfsd" 
} 

gist

Antwort

1

Sie benötigen statt Telefon phones_attributes params verwenden

curl -X POST -d "contact[name]=nome&contact[email][email protected]&contact[phones_attributes][0][number]=88888888&contact[phones_attributes][0][type]=1&contact[phones_attributes][2][number]=77777777&contact[phones_attributes][3][type]=1" 
+0

Dies keine Änderungen nichts. Ich speichere meine Daten als Array und nicht als Hash. Ich muss so speichern: https://gist.github.com/2399768 –