Mongoid вставляет только те поля, значение которых отличается от значения по умолчанию - PullRequest
1 голос
/ 27 июля 2011

У меня есть страница администратора в проекте, и я решил изменить имена большого раздела полей. Поэтому я изменил модель, чтобы отразить изменения, и попытался установить новые поля равными старым полям в командной строке. Я не мог понять, как это сделать, поэтому я в основном добавил новые поля на своей странице администратора и установил значения вручную (хак, я знаю).

Итак, скажем, 2 из новых полей:

field :foo, default: 0
field :bar, default: 9  

Казалось, все работает нормально, и когда я установил foo и bar в admin, их значения были сохранены. Но я заметил, что не смог запросить эти значения, как будто они не были сохранены в моей БД. Поэтому я посмотрел в MongoHub, и их там действительно не было. Поэтому я немного погуглил и увидел, что мне нужно сохранить обновление.

Итак, код обновления теперь выглядит так:

if @stat_definition.update_attributes(params[:stat_definition])
    @stat_definition.save
    [other stuff]

И теперь любое поле, для которого установлено значение, отличное от значения по умолчанию, сохраняется, а любое поле, оставленное по умолчанию, - нет. Что мне делать, чтобы сохранить эти значения по умолчанию?

А каким был бы способ установить foo в поле old_foo и в bar значение в old_bar?

1 Ответ

0 голосов
/ 27 июля 2011

Похоже, мне нужно выполнить несколько таких запросов, чтобы установить значения по умолчанию:

t.update( { x : { $exists : false } }, { $set : { x : 77 } }, false, true 
...