2012-04-13 2 views
0

Я создаю приложение, использующее sinatra + mongoid. У меня есть два models, у контакта много телефонов. Для того, чтобы проверить мой Синатра контроллер я отправляю свои данные с помощью этой команды `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" 

но когда я сделал один запрос в MongoDB я вижу, что не спасает, как и ожидалось. Мне нужен, чтобы класс телефона был сохранен с массивом, но теперь телефон является хешем, где ключ «0», «1», N, как и мои данные. Как мне решить эту проблему? Я хочу, чтобы данные, которые будут сохранены так:

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

gist

ответ

1

Вы должны использовать phones_attributes Params вместо телефона

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

Это не изменяется ничего. Я хочу сохранить мои данные как массив, а не как хэш. Мне нужно сохранить так: https://gist.github.com/2399768 –

Смежные вопросы